поддержание в актуальном состоянии резервной копии / копии каталога

Я пытаюсь создать «скрипт резервного копирования», чтобы обновлять каталог на USB-диске. Обычно каждый раз, когда я открываю свой компьютер, он запускается rsync -qrup dir/path backupKey/path. Мне нужна копия вместо архивной резервной копии, чтобы USB-накопитель можно было использовать на ходу

Теперь моя проблема заключается в том, что каждый раз, когда я изменяю структуру дерева каталогов книжных полок. Например: я перемещаю ~/bookshelf/studies/html to ~/bookshelf/studies/web-development/html

В моем backupKey rsync просто скопирует ~/bookshelf/studies/web-development/html (новое местоположение), но не удалит исходные файлы в ~/bookshelf/studies/html.

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

Различные вещи, о которых я думал или читал:

  • делали полную копию, используя cp, но это было бы намного медленнее и требовательнее к ресурсам.
  • Использование diff patch работает только с текстовым файлом (я видел расширенную возможность, но он становится сложным, и я не совсем понимаю)
  • Другие инструменты проверки двоичных различий, такие как bsdiff jdiff похоже, у меня нет рекурсивной опции, и я также не знаю, будет ли она работать с различными типами файлов.
  • Зацикливание всего файла и удаление того, что находится в неправильном месте (дублирует), например: если file1 находится в dirB, но не в dirA, удалите его.

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

Вот мой сценарий:

#!/bin/bash
## Create an backup script to keep my usb device.

## check if media Bookshlef is available
exec &>> /home/$USER/.local/scripts/bookSUpdater.log

echo "-----"
echo `date +%Y-%m-%d-%T`

if [ -e /media/$USER/Bookshelf ]; then
echo "Bookshelf usb key is available"

## use rsync to copy documents to usb dev.
echo "Starting transfer"

rsync -qrup /home/$USER/bookshelf/ /media/$USER/Bookshelf
## d= copy dir wihtout recursing, l= keep symlink:  rsync -qdlup /home/$USER/bookshelf/* /media/$USER/Bookshelf
## try with binary difference tool
## make a loop to check if file are deleted. IF YES delete

echo "Operation succesful"
echo $? && exit 0

else
  echo 'Error: Usb device unavailable aborting'
  echo 'Usage: Usb device '\"'Bookshelf'\"' must be plugged in.'

echo $? && exit 2
fi
0
задан 14 August 2019 в 04:54

1 ответ

для той же потребности я использую

rsync -rt --delete /souce /dest

, Видят , человек rsync
--delete для, удаляют посторонние файлы от dest директоров

0
ответ дан 23 October 2019 в 05:57

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

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