我一直在使用 rsync 将我的音乐库(由 banshee 管理)推送到我用于手机的 sdcard。
这帮助我解决了没有好的 GUI 程序来同步手机音乐的问题。虽然我一直讨厌 iTunes,但我承认,它在管理外部设备和 PC 之间存储在程序中的音乐和其他文件方面非常出色。我并不是说 rsync 不是一个很棒的实用程序,我知道它很棒,只是我没有像我希望的那样熟练使用它。
浏览过几次手册页后,我找到了以下两个脚本:
syncToSdCard.sh:
#!/bin/bash
exec > >(tee ~/rsync.out);
exec 2> >(tee ~/rsync.err);
rsync -v -r --delete-delay /home/user/Music/ /media/user/0741-C987/Music/;
更新SdCardOnly
#!/bin/bash
exec > >(tee ~/rsync.out);
exec 2> >(tee ~/rsync.err);
rsync -v -r -u --inplace -m --prune-empty-dirs -e --delete /home/user/Music/ /media/user/0741-C987/Music/;
我的目标是用我机器上的目录内容更新 SD 卡上的目录,并清除从源目录中移动或删除的所有内容。
第一个 rsync 脚本(syncToSdCard.sh)执行此操作;但是,它需要很长时间才能运行。
第二个 rsync 脚本,虽然包含删除选项,但仅将更改从我的本地机器(新文件和更新的文件)推送到 sdcard;但这个脚本非常快。
我正在寻找能够帮助我将两者合并在一起的人,以便快速更新并删除源(pc)上不再存在的文件,而目标(sdcard)上则不再存在这些文件。
有人能帮我吗?如果可能的话,我也愿意用其他方式来实现同样的目标;我能想到的用于这种操作的最佳工具就是 rsync。
谢谢。
答案1
我想我找到了问题的答案。我或多或少地尝试了更多参数,试图将这两个脚本结合起来,并得出了以下结论:
#!/bin/bash
exec > >(tee ~/rsync.out);
exec 2> >(tee ~/rsync.err);
rsync -v -r -u --inplace -m --prune-empty-dirs --delete-delay /home/user/Music/ /media/user/0741-C987/Music/;
到目前为止,它已经成功完成了我一直在寻找的工作,它建立了需要推送到设备的具体更改列表,并且无需对每个文件进行缓慢的比较,然后快速删除。
我不会将其标记为完成,直到我再测试几次以验证它正是我想要的。
如果其他人确实知道比我在这里想到的更好的方法来实现这个结果,请告诉我!
谢谢。