他のリモートサーバーには2つのディレクトリがdirOrig
あります。dirDest
彼らはすべて、さまざまな深さの多くのサブディレクトリを持っています。これで、特定のファイルまたは拡張子をからに再帰的にコピーする必要がありますfile1.txt
。しかし、これはサブディレクトリがすでに。dirOrig
dirDest
dirDest
たとえば、rsync を使用して、ソースからターゲットに特定のファイルのみを体系的にコピーできます。
rsync -zarv --prune-empty-dirs --include "*/" --include="file1.txt" --exclude="*" "dirOrig" "dirDest"
dirDest
しかし、どのようにこのコピーをtarget()に存在するサブディレクトリに限定するのですか?
ベストアンサー1
どんな命令もわかりませんが、私が思いついたトリックは次のとおりです。
コピー
rsync
用dirOrig
server1
server2
rsync -zarv --prune-empty-dirs --include "*/" \ --include="file1.txt" --exclude="*" "server1:dirOrig" \ "server2:dirOrig"
dirOrig
コピーに存在しないサブディレクトリの削除dirDest
comm
comm -23 <( cd server2:dirOrig && find -mindepth 1 -type d | sort ) \ <( cd server2:dirDest && find -mindepth 1 -type d | sort ) \ | ( cd server2:dirOrig && xargs rm -rf )
最後に、チェックサムに基づいてrsyncを実行し、dirDestに存在しないdirOrigのすべてのファイルを削除します
dirDest
。dirOrig
file1.txt
rsync -acv --exclude=file1.txt --delete \ server2:dirDest server2:dirOrig