Я использую rsync для резервного копирования. Вот моя командная строка:
sudo rsync -avuh --delete --stats --log-file=$LOGFILE --exclude-from $EXCLUDE $SOURCE $DEST
Это работает в большинстве случаев. Однако сегодня я столкнулся со сценарием, в котором я просто изменил атрибуты файла, чтобы сделать его исполняемым. Из любопытства я запустил rsync, но он не показал, что файл копируется в место назначения.
Содержимое файла абсолютно одинаковое, а вот вывод статистики:
Файл: `Projects/simpleFlash.py' Размер: 706 Блоки: 8 Блок ввода-вывода: 4096 обычный файл Устройство: 802h/2050d Inode: 56961 Ссылки: 1 Доступ: (0755/-rwxr-xr-x) Uid: (1000/pi) Gid: (1000/pi) Доступ: 2015-03-26 17:13:29.970428613 -0400 Изменить: 2015-02-17 00:16:44.558033934 -0500 Изменение: 2015-05-19 13:53:28.401164123 -0400 Рождение: -
Mtimes одинаковы, но ctime отличается. Как заставить rsync просматривать изменения атрибутов файлов для файлов с одинаковым mtime?
характеристики: rsync 3.0.9 ФС: ext4 ядро Linux: 3.18.11+
решение1
Как указано на rsync(1)
странице руководства:
Rsync находит файлы, которые необходимо перенести, используя алгоритм "быстрой проверки" (по умолчанию), который ищет файлы, которые изменились по размеру или по времени последнего изменения. Любые изменения в других сохраненных атрибутах (по запросу параметров) производятся непосредственно в файле назначения, когда быстрая проверка показывает, что данные файла не нуждаются в обновлении.
Это значит, что пока вы говорите rsync
передавать атрибуты, они будут обновлены. Вы сказали, что отсутствующий атрибут — это разрешения, поэтому добавьте -p
или --perms
в командную строку, и все готово.