rsync文件从源文件夹上的子文件夹到目标文件夹的根目录

时间:2012-04-23 05:45:58

标签: file include rsync

我希望将位于各个子文件夹中的一堆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来实现此目的吗?

0 个答案:

没有答案