Назад | Перейти на главную страницу

Большой FTP-перенос с одного сервера на другой

Приветствую, я использую ncftpput для передачи большого количества файлов с одного сервера на другой.

ncftpput -f server.txt -vRdb /public_html /var/www/site.com

Происходит то, что соединение прерывается примерно после 100 переводов. Нужно передать тысячи файлов. Проблема в том, что после того, как соединение разорвано и я повторно ввожу команду, она запускается с самого начала. Замена всех существующих файлов, делая предыдущий перенос избыточным. Есть ли способ пропустить существующие файлы? Этого нет на странице руководства, поэтому я предполагаю, что нет. Так кто-нибудь предлагает альтернативное решение для командной строки?

lftp - отличный инструмент для этого, его можно использовать в сценариях с помощью команды mirror:

 lftp has builtin mirror which can download or update a whole
 directory  tree.  There  is  also reverse mirror (mirror -R)
 which uploads or updates a directory tree on server.  Mirror
 can also synchronize directories between two remote servers,
 using FXP if available.

$ lftp -f

файл_сценария:

open ftp://<user>:<pass>@ftp.blah.org/~
set net:timeout 10
set net:max-retries 2
set net:reconnect-interval-base 5
set net:reconnect-interval-multiplier 1
mirror dir1 dir1
exit
#!/bin/bash

FILES=`cat server.txt`
for FILE in $FILES
do
  if [ ! -d "$FILE" ]; then
    echo "Uploading $FILE..."
    ncftpput -DD -u $FTPUSER -p $FTPPASS $FTPHOST /destination/ftp/dir/$FILE
  fi
done

Не забудьте установить FTPUSER, $ FTPPASS, $ FTPHOST. Параметр -DD удалит файл после успешный загрузить. "! -D" $ FILE "" в строке 4 пропускает каталоги в server.txt. Не забудьте сделать скрипт исполняемым с помощью "chmod 755 yourscriptfile".

Вы можете попробовать работать с ncftpput -DD вариант. Это приведет к удалению локального файла после его успешной передачи. Если вы не хотите удалять файлы в каталоге / public_html, вы можете сначала скопировать их во временный каталог.

Вы пробовали этот вариант?

-A Добавлять к удаленным файлам вместо их перезаписи.

(из сайт ncftp)

Пытаться wput

Есть ли причина, по которой вы не можете использовать rsync вместо ftp?

IMO rsync - подходящий инструмент для этой работы. Он будет передавать только новые и измененные файлы, а это означает, что если передача завершается и ее необходимо перезапустить, она будет продолжена с того места, где была остановлена, а не начнется снова с начала.