rsync は中間ディレクトリを除外します。

rsync は中間ディレクトリを除外します。

src /foo/bar/.jpgをdest /foo/.jpgに同期するrsyncジョブを作成しようとしています。中間ディレクトリはスキップし、最上位ディレクトリは維持します。 --include --exclude オプションを使用してこれを行う方法があると確信していますが、まだ見つかりませんでした。

これがsrc構造です。

   /Volumes/ExtHDD
└── YYMMDD
    ├── foo1
    │   └── bar
    ├── foo2
    │   └── bar
    └── foo3
        ├── image1.jpg
        ├── image2.jpg
        ├── image3.jpg
        └── image4.jpg

それが私の究極の目標です。

   /Volumes/OS/Users/user/Dropbox
└── YYMMDD
        ├── image1.jpg
        ├── image2.jpg
        ├── image3.jpg
        └── image4.jpg

私は努力しました。

rsync -avhW --include='*.jpg' --exclude='*' src dest

ところで.jpgファイルも見つからず、除外オプションが優先であるようですが、フィルタには動作順があると思います。

ベストアンサー1

これらのファイルを直接コピーできます。

src='/Volumes/ExtHDD'
dst='/Volumes/OS/Users/user/Dropbox'
dir='YYMMDD'

mkdir -p "$dst/$dir"
rsync -av "$src/$dir"/*/*.jpg "$dst/$dir/"

if はYYMMDD一連のディレクトリを表し、ループを使用してディレクトリをナビゲートします。

for dir in "$src"/??????
do
    mkdir -p "$dst/${dir##*/}"
    rsync -av "$dir"/*/*.jpg "$dst/${dir##*/}/"
done

おすすめ記事