Как исключить ранее удаленные файлы из новой копии rsync?

Продолжая этот вопрос:

Автоматически синхронизировать папку с USB при подключении USB?

Я не хочу автоматический сценарий, но только небольшой bash-скрипт для выполнения следующих действий:

  • Скопировать текущий ~/Documents/ в резервную папку
  • Скопировать новые файлы с USB / Documents в ~/Documents/
  • Скопировать и перенести удаления из ~/Documents/ в USB/Documents/

Теперь у меня есть:

# Backup local:
rsync -av ~/Documents/ ~/backup20112012/Documents/

# Synch new files from USB:
rsync -auv /media/20CC-A5E5/Documents/ ~/Documents/

# Sync and delete USB:
rsync -av --delete ~/Documents/ /media/20CC-A5E5/Documents/

, который работает с одним исключением. Если я удаляю файл в ~ / Documents, он снова создается на шаге 2 (потому что он на USB). Есть ли способ пропустить копирование файлов, которые были удалены на втором этапе?

3
задан 13 April 2017 в 15:24

2 ответа

Твои требования немного странные. Похоже, вы хотите синхронизировать ~/Documents и USB/Documents, чтобы они имели одинаковое содержимое. Если это так, используйте unison Install unison , который является инструментом выбора, когда вы ищете двунаправленный rsync.

0
ответ дан 13 April 2017 в 15:24

Если вы хотите удалить все файлы на USB, которых нет на ПК, то я считаю, что вы можете сделать это:

# deletes any files that are on the USB that are not on the PC and synchronizes any files that have been changed more recently on the PC then on the USB.
rsync -auv --delete ~/Documents/ /media/20CC-A5E5/Documents/
# synchronizes files that are newer on the USB then on the PC
rsync -auv /media/20CC-A5E5/Documents/ ~/Documents/

Имея первую команду, использующую -u, вы не должны перезаписать любые файлы, которые находятся на USB и ПК, и с помощью --delete вы удалите все файлы, которые находятся на USB, которых нет на ПК. Затем вторая команда синхронизирует USB с ПК.

Единственным недостатком этого является то, что ЛЮБЫЕ файлы, которые находятся на USB, но не на ПК, будут удалены. Это то, что вы хотите, я думаю, хотя. Если вы создадите на USB новые файлы, которых нет на ПК, новые файлы на USB будут удалены. Если вы удалите какие-либо файлы на ПК, они будут удалены на USB.

Из того, что вы хотите, я не думаю, что этого будет достаточно, но это самое большее, что вы можете сделать с RSync.

Если вы хотите просто удалить на USB файлы, которые были УДАЛЕНЫ на ПК, а НЕ УДАЛИТЬ файлы на USB, которых никогда не было на ПК, то вам придется создать какую-то программу, которая будет регистрировать каждый раз, когда вы удаляете файл на своем ПК, а затем удаляете только те, что на USB. Что, вероятно, намного сложнее и требует больше работы, чем вы хотите для этого сделать.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: