У меня есть одна большая папка «X» в моей домашней директории, и ее устаревшая копия на флешке - Y. Что является аналогом rm Y; cp X Y
, но без перезаписи уже существующих файлов?
23
Rsync имеет гораздо больше свойств, чем упоминалось в предыдущем ответе. Вы должны посмотреть на них сами:
man rsync
Но для вашей проблемы я бы предложил:
rsync -a --delete X Y
Таким образом, получатель (Y) удалит любой файл, который у него есть, но не в X. Убедитесь, что вы все сделаете правильно. При неправильном использовании root может легко убить вашу систему ... :)
rsync -a --delete X/ Y
. Эта небольшая косая черта после X заставила его работать так, как мне предназначалось, так что это может помочь и другим. Объясняется здесь: abbeyworkshop.com/howto/unix/nix_rsync/index.htmlПосмотрите на rsync (1) . Он предназначен для того, чтобы делать именно то, что вы хотите.
Он поддерживает удаленное копирование через собственный протокол или ssh, но его также можно использовать локально.
В зависимости от того, какое поведение вы хотите, вы также можете передать
--update
опцию. Это скажет rsync не перезаписывать файлы, которые уже существуют на цели и являются более новыми, чем те, которые находятся в источнике.Если вы хотите удалить дополнительные файлы (то есть файлы, которые существуют в Y, но не в X), вы можете добавить
--delete
опцию.источник
rm Y; cp X Y
будет.Попробуйте использовать rsnyc, возможно, с помощью следующей команды:
-u
= не перезаписывать файл в месте назначения, если он измененисточник
rm Y; cp X Y
будет.Я думаю, что некоторые функции, которые вы ищете в опции -u (обновление), действительно существуют в этой опции:
«--ignore-Существующий» - пропустить обновление файлов, которые существуют на приемнике
источник