Я тщательно изучил подобные вопросы по stackoverflow, но они не охватывают ситуацию, которую я хотел бы здесь задать.

У меня есть все мои музыкальные файлы на моей удаленной машине. Я хотел бы синхронизировать их с моими локальными устройствами. Допустим, я хочу синхронизировать их на двух моих ноутбуках. Изначально на обоих ноутбуках не было музыкальных файлов. Я запускаю простой rsync для них обоих и получаю все музыкальные файлы.

  Laptop 1 [a.mp3,b.wav,c.mp4] {-------\
                                        \----|
                                             | Server [a.mp3,b.wav,c.mp4]
                                        /----|
  Laptop 2 [a.mp3,b.wav,c.mp4] {-------/

Теперь я хотел бы придерживаться следующих правил при синхронизации.

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

Как я могу достичь вышеуказанных правил с rsync? Я готов выполнить более одной команды на всех устройствах / ноутбуках для синхронизации, следуя приведенным выше правилам.

Дайте мне знать, если я не прояснил ситуацию. Я отредактирую вопрос, чтобы сделать его более понятным.

1 ответ1

0

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

Поэтому, если на ноутбуке 1 вы удалите .mp3, вы добавите файл в файл, который мы назовем ~/.music_exclude.

# this is the file .music_exclude on laptop1
a.mp3

Затем, чтобы синхронизировать любые добавленные песни на сервер, кроме тех, что в .music_exclude:

laptop1$ rsync -azC --exclude-from=~/.music_exclude path/to/music/ user@server:path/to/music/

Чтобы получить всю новую музыку с сервера и обработать любые удаления:

laptop1$ rsync -azC --exclude-from=~/.music_exclude --delete user@server:path/to/music/ path/to/music/

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