
У меня есть одна большая папка "X" в домашнем каталоге и устаревшая ее копия на флешке — Y. Какой есть аналог rm Y; cp X Y
, но без перезаписи уже существующих файлов?
решение1
Есть еще много объектов недвижимостиrsyncчем упоминается в предыдущем ответе. Вы должны изучить их самостоятельно:
man rsync
Но для решения вашей проблемы я бы предложил:
rsync -a --delete X Y
Таким образом, получатель (Y) удалит любой файл, который у него есть, которого нет в X. Убедитесь, что вы делаете это правильно. Неправильное использование в качестве root может легко убить вашу систему... :)
решение2
Взгляни наrsync(1). Он предназначен для выполнения именно того, что вам нужно.
rsync -av X Y
Он поддерживает удаленное копирование через собственный протокол или ssh, но его также можно использовать локально.
В зависимости от желаемого поведения вы также можете передать опцию --update
. Это скажет rsync не перезаписывать файлы, которые уже существуют на цели и являются более новыми, чем в источнике.
Если вы хотите удалить лишние файлы (т. е. файлы, которые существуют в Y, но отсутствуют в X), вы можете добавить эту --delete
опцию.
решение3
Вы могли бы использоватьФитус/Залоха.ш. Сначала он вычисляет необходимые действия по синхронизации, представляет их вам, запрашивает подтверждение, а затем выполняет их:
$ Zaloha.sh --sourceDir="X" --backupDir="Y"
решение4
Я думаю, что часть функций, которые вы ищете в опции -u (обновление), на самом деле существует в этой опции:
"--ignore-existing" - пропустить обновление файлов, существующих на приемнике