1

我希望将驻留在各种子文件夹中的一堆 flac 文件同步到目标文件夹的根目录。

源目录结构的示例是:

source> tree Music/
Music/
├── R
│   ├── Radiohead
│   │   └── OK Computer
│   │       ├── 01 - Radiohead - Airbag.flac
│   │       ├── 02 - Radiohead - Paranoid Android.flac
│   └── Red Hot Chilli Peppers
│       └── Greatest Hits
│           ├── 01 - Red Hot Chili Peppers - Under the Bridge.flac
│           ├── 02 - Red Hot Chili Peppers - Give It Away.flac

我正在使用此命令,它可以很好地同步,但包含目标上的目录路径:

rsync -rltDzvh --delete -e ssh Music/ user@192.168.1.1:/Destination/ --include="*/" --include="*.flac" --exclude="*"

所以在目的地的结构是:

destination> tree /Destination/
/Destination/
├── R
│   ├── Radiohead
│   │   └── OK Computer
│   │       ├── 01 - Radiohead - Airbag.flac
│   │       ├── 02 - Radiohead - Paranoid Android.flac
│   └── Red Hot Chilli Peppers
│       └── Greatest Hits
│           ├── 01 - Red Hot Chili Peppers - Under the Bridge.flac
│           ├── 02 - Red Hot Chili Peppers - Give It Away.flac

我想修剪所有目录,以便仅将文件放入 /Destination/ 的根目录中,例如

destination> tree /Destination/
/Destination/
├── 01 - Radiohead - Airbag.flac
├── 02 - Radiohead - Paranoid Android.flac
├── 01 - Red Hot Chili Peppers - Under the Bridge.flac
├── 02 - Red Hot Chili Peppers - Give It Away.flac

所有文件都有不同的名称,所以没关系,我已经查看了 rsync 中的各种选项,例如 --no-relative 但无法让它按需要工作。

我还想出了:

find ./Music/ -name "*.flac" -exec rsync -ltDzvh {} -e ssh user@192.168.1.1:/Destination/ \;

但这意味着使用 ssh 密钥并且可能效率低下,如果我想使用 --delete 它可能会破坏一切。

那么,当我在源上的音乐库中添加、删除或重命名项目并将这些更改同步到目标时,我将如何实现这一点,同时仍然能够使用 --delete 或 --delete-excluded 呢?

4

0 回答 0