Попытка обновить файлы на сервере с rsync
команда:
rsync -ravq -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
corrupt packet
ошибки продолжают возникать, в частности:
rsync: writefd_unbuffered failed to write 4092 bytes to socket [sender]: Broken pipe (32)
rsync: connection unexpectedly closed (11337 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /home/lapo/package/rsync-3.0.9-1/src/rsync-3.0.9/io.c(605) [sender=3.0.9]
Вероятно, это связано с ssh
тайм-аут, как это бывает с большими (r) файлами. Кроме того, я продолжаю получать таймауты при использовании WinSCP. Это происходит только со мной; Некоторые люди, с которыми я работаю, используют этот сервер, не имеют такой проблемы.
С помощью rsync
с терминала Cygwin в Windows 7 против сервера Centos 6.3.
Я не уверен, какая еще информация может быть полезна и как ее получить. Я обновлю вопрос или добавлю комментарии по любым предложениям.
Как мне это решить?
Огромное спасибо!
Я не уверен, что может вызвать corrupt packet
проблема, которая разрывает ваше соединение, но вы можете найти rsync's --partial
или --partial-dir
Эта опция полезна при передаче больших файлов, чтобы при перезапуске передачи она продолжалась с того места, где была остановлена передача, вместо того, чтобы снова начинать передачу всего файла заново:
--partial-dir = .rsync-partial
Таким образом, вы можете изменить исходную команду следующим образом:
rsync -rav --progress --partial -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
или
rsync -rav --progress --partial-dir=.rsync-partial -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
Обратите внимание, что в этом примере я удалил -q
(--quiet
) и добавил --progress
вариант в первом примере и --partial-dir=.rsync-partial
во втором примере.
Разница между --partial
и --partial-dir=.rsync-partial
заключается в том, что последний создает каталог, в котором частичные файлы хранятся отдельно от полностью переданных файлов, если это важно для вас на принимающей (серверной) стороне.
В справочная страница rsync объясню это более подробно, хотя я также отмечу важный записка о безопасности из справочной страницы:
ВАЖНО: --partial-dir не должен быть доступен для записи другим пользователям, иначе это представляет угрозу безопасности. Например. ИЗБЕГАЙТЕ "/ tmp".
Повреждение предполагает наличие на вашем компьютере плохого сетевого адаптера или драйвера сетевого адаптера; однажды было такое на коробке Windows моей жены: приходилось неоднократно пытаться установить rsync. Как только это удастся, я смогу неоднократно вызывать rsync для передачи и исправления другого необходимого программного обеспечения, в том числе обновленных драйверов сетевого адаптера и инструмента контрольной суммы.
Если значение ulimit равно 0 или небольшому числу, оно должно выдавать эту ошибку. Попробуйте увеличить значение ulimit (such as 9999999999)
и попробуй еще раз. вы можете написать небольшой сценарий оболочки (a.sh)
и используйте что-то вроде этого:
#!/bin/sh
ulimit 99999999999
rsync -avrz --perms --delete --chmod=u+rwx,g+rx,o+x /dir1/ /dir2/
просто зацикливайтесь, пока он не перейдет наконец
while ! sshpass -p 'xxxx' rsync --partial --append-verify --progress -a -e 'ssh -p 22' /source/ remoteuser@1.1.1.1:/dest/; do sleep 5;done