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

rsync - добавочный список файлов отправлен, но файлы не обновлены на сервере

Я работаю с некоторыми исходными файлами с настольного компьютера. Исходные файлы компилируются и запускаются на удаленном сервере.

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

Однако есть проблема ... rsync не обновляет файлы, когда я синхронизирую их с сервером после редактирования на моей стороне. Список дополнительных файлов отправляется, но содержимое файла не изменяется.

Вот полный результат моего сеанса bash, который подробно объяснит, что происходит.

(баш)

$ rsync -av ./2016-07-01 user@server:./path-to-project/2016-07-01
user@server's password: [enter password] 
sending incremental file list
2016-07-01/subfolder/
2016-07-01/subfolder/main.cpp

sent 2,238 bytes  received 272 bytes  557.78 bytes/sec
total size is 632,957  speedup is 252.17

(баш)

$ rsync -av ./2016-07-01 user@server:./path-to-project/2016-07-01
user@server's password: [enter password] 
sending incremental file list

sent 1,342 bytes  received 36 bytes  110.24 bytes/sec
total size is 632,957  speedup is 459.33

Я также пробовал использовать -c флаг для контрольных сумм, а не меток даты и времени, снова виден тот же результат.

Короче, это не правильная команда ...

$ rsync -av ./2016-07-01 user@server:./path-to-project/2016-07-01

это является правильная команда ...

$ rsync -av ./2016-07-01 user@server:./path-to-project

Заметка, без косой черты или имени каталога для пункта назначения - когда они останутся rsync создаст каталог по мере необходимости. я думаю / и 2016-07-01 подразумевают, что нужно сделать 2 разные вещи. Нет / означает создать каталог. Я не уверен, каков эффект добавления / удаления 2016-07-01 если / является там. Возможно, кто-то сможет это прояснить.

Также обратите внимание, что существует 3 способа адресации пункта назначения на удаленном сервере.

  • Используя описанный выше метод, начиная с адреса .. Команда rsync по умолчанию использует домашний каталог пользователя, поэтому этот относительный путь к домашнему каталогу работает.

  • Также можно ввести полный абсолютный путь из корневого каталога. Для меня это что-то вроде /afs/servername/u/username/rest_of_path_from_home_dir

  • Наконец, используя ~ расширение как ярлык для вышеуказанного также будет работать.