Мне нужно перенести файлы с одного сервера CentOS на другой. Я буду передавать файлы по 5 МБ каждые 10 минут. Мне не нужно шифрование.
Какой простой способ быстрой передачи этих файлов? Есть ли что-то проще, чем FTP?
Мне нужно перенести файлы с одного сервера CentOS на другой. Я буду передавать файлы по 5 МБ каждые 10 минут. Мне не нужно шифрование.
Какой простой способ быстрой передачи этих файлов? Есть ли что-то проще, чем FTP?
Распределенная файловая система или используйте crontab
для выполнения задания scp
/rsync
.
scp = безопасное удаленное копирование, вам потребуется настроить файл идентификации и ключ аутентификации для аутентификации ключа, т.е. без пароля
crontab работа:
crontab -e
вставьте это в файл (для):
*/10 * * * * scp me@remote.machine:/remote/path/file /save/to/path
Если все сложнее, чем FTP, то используйте флешку USB!
netcat
проще, так как это просто необработанные байты (ala cat
) по проводам. но вам также понадобится прослушивающий netcat
с другой стороны ... "в нужное время" :)
receiver> nc -l -s 0.0.0.0 -p 12345
а затем вы отправляете файл через
sender> nc receiver 12345 < file
Это самый простой способ переноса файлов с одного компьютера на другой. Нет аутентификации, нет шифрования, ничего, кроме сырых байтов.
но я не буду рекомендовать это в любом случае для надежной передачи файлов по сети. используйте ssh/scp.
Я бы сказал, что rsync
- это путь.
Гораздо проще написать сценарий для xfer, чем для ftp, и достаточно хорошо разбираться в том, как он работает (возобновление, сравнения и т.д.). Вы также можете настроить его на периодическое сканирование самого каталога и загрузку новых / измененных файлов, чтобы вы могли пропустить crontab.
Обычно rsync является скользким, поэтому, если вы хотите увидеть, что он делает, вам нужно
Довольно хороший обзор / учебник: http://everythinglinux.org/rsync/
(copy recursively, keep symlinks/users, verbose, checksum)
rsync --progress -avz
/copy/files/*.tar.gz
username@other-server:/destination/folder
Что касается распределенных файловых систем, это звучит сложно. Вы можете просто смонтировать один и тот же том NFS на обеих машинах? Если только один пишет, вам не о чем беспокоиться.
Вы хотите, чтобы это было автоматически?
sshfs - это хороший способ, если нет, просто установите sshfs и запустите
mkdir /mount/point
sshfs user@server:/remote/path /mount/point
и введите свой пароль в командной строке, тогда удаленный путь выглядит как локальный каталог на вашем компьютере. Конечно, вам понадобится ssh-сервер на удаленном конце. OpenSSH - хорошая альтернатива
Если передача выполняется только в одном направлении, вы можете развернуть простой HTTP-сервер, такой как mini-httpd
, опубликовать файлы в каталоге, который предоставляет mini-httpd
, и позволить получателю загрузить их с помощью wget
. mini-httpd
- это первое, что приходит на ум, когда я думаю о простом HTTP-сервере, но я уверен, что есть более простые (разве у вас нет технической возможности настроить веб-сервер с помощью bash
? разве где-то не так, как в Perl, где реализован простой веб-сервер?)
Если у вас уже есть веб-сервер на этом хосте, который не доступен для общественности, вы можете использовать его повторно.
wput - это ftp-клиент для командной строки, который упрощает загрузку файлов с помощью одной команды:
wput myfile.tar ftp://user:pass@example.com/mydir/
Конечно, вы можете сделать то же самое с другой стороны, используя wget/curl и веб-сервер.
Другой вариант - настроить сервер NFS на одном узле и подключить его на другом узле.
Другой вариант - MidnightCommander
(mc). Если вы выросли с DOS и NortonCommander.