【Linux】 2つのディレクトリをマージしたい(rsync方式)
問題
2つのディレクトリをマージしたいんですけど、そんなコマンドないんですか。
例)バックアップから復元したディレクトリ(A)と、今稼働しているディレクトリ(B)を合わせて1つにしたい。Aに存在するファイルで、Bに存在しないファイルは追加したい。Aに存在するファイルで、Bに存在するファイルは上書きしたい。Aに存在しないファイルで、Bに存在するファイルはそのまま残したい。
答え
rsync がお手軽。
aaa と bbb があるとする。
# find . . ./bbb ./bbb/bbb ./bbb/bbb/3.txt ./bbb/bbb/2.txt ./bbb/aaa ./bbb/aaa/3.txt ./bbb/aaa/1.txt ./aaa ./aaa/bbb ./aaa/bbb/1.txt ./aaa/bbb/2.txt ./aaa/aaa ./aaa/aaa/1.txt ./aaa/aaa/2.txt
ディレクトリ aaa/ を ディレクトリ bbb にマージ。
# rsync -a aaa/ bbb
結果、aaaにあったファイルがbbbに追加された。
# find . . ./bbb ./bbb/bbb ./bbb/bbb/3.txt ./bbb/bbb/1.txt ./bbb/bbb/2.txt ./bbb/aaa ./bbb/aaa/3.txt ./bbb/aaa/1.txt ./bbb/aaa/2.txt ./aaa ./aaa/bbb ./aaa/bbb/1.txt ./aaa/bbb/2.txt ./aaa/aaa ./aaa/aaa/1.txt ./aaa/aaa/2.txt
メモ
cpコマンドのバージョンが新しいと以下のようなことができる。
cp [OPTION]... [-T] SOURCE DEST
CentOS6のcpコマンド(バージョン5)では、この -T オプションはない。需要は多そうなのに、ちょっと前まで実装されていなかった機能のようだ。
コメント