Я пытаюсь создать «скрипт резервного копирования», чтобы обновлять каталог на 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
похоже, у меня нет рекурсивной опции, и я также не знаю, будет ли она работать с различными типами файлов. Если кто-то в качестве примера кода цикла. Мне нужно, чтобы он работал с цифровыми книгами любого типа, а также с заметками и изображениями. Извините, я искал несколько часов в Интернете и не могу найти решение, которое соответствует моей идее.
Вот мой сценарий:
#!/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
для той же потребности я использую
rsync -rt --delete /souce /dest
, Видят , человек rsync
--delete
для, удаляют посторонние файлы от dest директоров