我目前正在运行以下脚本来自动备份我的音乐:
#!/bin/bash
while :; do
rsync -ruv /mnt/hdd1/Music/ /mnt/hdd2/Music/
done
每当将新文件添加到我的音乐文件夹时,rsync都会检测到该文件,并将其复制到我的其他磁盘。这个脚本运行正常,但我还想将检测到的文件转换为ogg opus文件,以便放在我的手机上。
我的问题是:如何对rsync -u
找到的新文件运行命令?
我也会接受完全不同的答案,但结果相同。
答案 0 :(得分:2)
rsync -ruv /mnt/hdd1/Music /mnt/hdd2/ | sed -n 's|^Music/||p' >~/filelist.tmp
while IFS= read filename
do
[ -f "$filename" ] || continue
# do something with file
echo "Now processing '$filename'"
done <~/filelist.tmp
使用-v
选项,rsync
打印它复制到stdout的文件的名称。我使用sed将文件名(不包括信息性消息)捕获到文件中。可以在以后随意处理该文件中的文件名。
上面sed
的方法取决于rsync
显示从源目录的最后部分开始的文件名,例如:我上面的例子中的“音乐/”,假设你不需要它就会被删除。或者,可以尝试使用明确的方法来排除噪声消息。