21

У меня есть одна большая папка "X" в моей домашней директории, и ее устаревшая копия на флешке - Y. Что является аналогом rm Y; cp X Y , но без перезаписи уже существующих файлов?

4 ответа4

25

Rsync имеет гораздо больше свойств, чем упоминалось в предыдущем ответе. Вы должны посмотреть на них сами:

man rsync

Но для вашей проблемы я бы предложил:

rsync -a --delete X Y

Таким образом, получатель (Y) удалит любой файл, который у него есть, но не в X. Убедитесь, что вы все сделаете правильно. При неправильном использовании root может легко убить вашу систему ... :)

15

Посмотрите на rsync(1). Он предназначен для того, чтобы делать именно то, что вы хотите.

rsync -av X Y

Он поддерживает удаленное копирование через собственный протокол или ssh, но также может использоваться локально.

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

Если вы хотите удалить дополнительные файлы (т.е. файлы, которые существуют в Y, но не в X), вы можете добавить опцию --delete .

0

Я думаю, что некоторые функции, которые вы ищете в опции -u (обновление), на самом деле существуют в этой опции:

«--ignore-Существующий» - пропустить обновление файлов, которые существуют на приемнике

0

Попробуйте использовать rsnyc, возможно, с помощью следующей команды:

rsync -avzu /home/x /y

-u = не перезаписывать файл в месте назначения, если он изменен

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .