Я пытаюсь выполнить синхронизацию между папкой и USB-накопителем, чтобы
a) когда я подключал конкретный USB-накопитель, запускался сценарий для копирования любых новых файлов с USB-накопителя в папку; и
b) когда я размонтирую диск (нажмите eject в nautilus), запускается скрипт для копирования любых новых файлов из папки на usb.
Я уверен, что могу использовать udev и rsync для выполнения части а), но как я могу выполнить часть б)?
Дублирующийся ответ имеет большую часть того, что необходимо. Приветствующиеся комментарии. Включите его для получения идентификаторов:
lsusb
замените идентификаторы и скажите это что сценарии.
ACTION=="add", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="0260", OWNER="{userid}", RUN+="/usr/local/bin/usb-copy-add.sh"
ACTION=="remove", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="0260", OWNER="{userid}", RUN+="/usr/local/bin/usb-copy-remove.sh"
Сценарии копии usb могли быть сделаны несколькими способами. Они посмотрят что-то как следующее. Это - удаление. Обратные вещи для добавления (не работает рекурсивно):
#!/bin/sh
localf={/your/local/folder/}
for x in `ls -1 "$localf"`
do
file=`basename $x`
cd {mounted dir}
if [ "$file" -nt "$x" ]
then
cp "$file" "$localf"
fi
done
или от суперпользователя отвечают, что существует ссылка, которая описывает CP - обновление (с рекурсивным-r). Это - удаление, реверс для добавления:
cp -r -u {mounted dir} {/your/local/folder/}
также из того же ответа суперпользователя, это - удаление, реверс для добавления:
rsync --progress -r -u {mounted dir} {/your/local/folder/}
Заяц является некоторыми другими идеями копии.