我正在尝试在文件夹和 USB 驱动器之间进行同步,以便
a)当我插入特定的 USB 驱动器时,将运行一个脚本将任何较新的文件从 USB 复制到该文件夹;并且
b) 当我卸载驱动器(在 nautilus 中单击弹出)时,将运行一个脚本以将所有较新的文件从文件夹复制到 USB。
我相信我可以使用 udev 和 rsync 来完成部分 a),但是我如何实现部分 b)?
答案1
重复答案包含大部分必要内容。欢迎评论。插入以获取 ID:
lsusb
替换id并告诉它什么脚本。
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-copy 脚本可以通过多种方式完成。它们看起来类似于以下内容。这是删除。反向操作添加(不递归工作):
#!/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 --update (使用 -r 递归)。这是删除,添加的反向操作:
cp -r -u {mounted dir} {/your/local/folder/}
也来自同一个超级用户回答,这是删除,反向为添加:
rsync --progress -r -u {mounted dir} {/your/local/folder/}
野兔是其他一些副本想法。