当我卸载特定的 USB 驱动器时,如何运行脚本?

当我卸载特定的 USB 驱动器时,如何运行脚本?

我正在尝试在文件夹和 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/}

野兔是其他一些副本想法

相关内容