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

Rsync --link-dest создавать папку только тогда, когда есть что обновить

Во-первых, мне сложно понять, что --update параметр делает. Я думал, что без него он логически обновит любой файл, который изменяется, и я считаю, что это то, что он делает, так почему --update параметр вообще существует?

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

Есть ли способ остановить это от rsync --link-dest? То есть создавать папку только в случае каких-либо изменений, в противном случае ничего не делать. Похоже на довольно простой сценарий случая, поэтому я подумал, что есть простой способ сделать это с помощью параметра, но я нигде не могу найти ответ.

rsync -azP --delete --stats --update --log-file=/var/log/rsync/apacheconfдата +% F_% T.log -e "ssh -i /home/user/.ssh/id_rsa" /etc/apache2/sites-available --link-dest=/mnt/backup/apache2/apache user@xxx.xxx.xxx:/mnt/backup/apache2/apacheдата +% F_% T.log

Что касается --update, то справочная страница rsync очень ясно:

-u, --update: skip files that are newer on the receiver. Это заставляет rsync пропускать любые файлы, которые существуют в месте назначения и имеют более новое время изменения, чем исходный файл. (Если существующий файл назначения имеет время модификации, равное времени изменения исходного файла, он будет обновлен, если размеры отличаются.)

Без этой опции старый файл на src может перезаписать новый файл на dst. Используя эту опцию, вы уверены, что более новые файлы никогда не будут перезаписаны более старой версией.

Для вашей второй проблемы просто избегайте использования --link-desk. Весь смысл этого варианта в том, чтобы полный каталог / дерево файлов без придется заплатить место настоящей, полной копии. Если вы не хотите каждый раз создавать полное дерево, а хотите видеть только измененные файлы / каталоги, избегайте использования --link-desk

Кроме того, для повышения эффективности процесса передачи файлов вы можете использовать --compare-dest:

--compare-dest=DIR Этот параметр указывает rsync использовать DIR на конечном компьютере в качестве дополнительной иерархии для сравнения файлов назначения с выполнением передач (если файлы отсутствуют в каталоге назначения). Если в DIR обнаружен файл, идентичный файлу отправителя, этот файл НЕ будет передан в каталог назначения. Это полезно для создания разреженной резервной копии только файлов, которые были изменены по сравнению с предыдущей резервной копией.