フォルダーoldとがありますnew。
私は、内のすべての内容を交換したいold/*のnew/*。これらのフォルダには多くのサブディレクトリが存在する場合があります。
しかし、ファイルが入っていないがnew/*入っているファイルはほとんどないold/*ので、そのままにしておきたい。
Linuxシェルからこれを行うにはどうすればよいですか?
フォルダーoldとがありますnew。
私は、内のすべての内容を交換したいold/*のnew/*。これらのフォルダには多くのサブディレクトリが存在する場合があります。
しかし、ファイルが入っていないがnew/*入っているファイルはほとんどないold/*ので、そのままにしておきたい。
Linuxシェルからこれを行うにはどうすればよいですか?
回答:
ここでは、rsyncがおそらくより良いオプションです。rsync -a subdir / ./と同じくらい簡単です。より良い解決策については、このunix.stackexchageの回答を確認してください
使用 -fしてcpコマンド
cp -fR /source/files /dest
cpが上書きを抑制する」プロンプト。
cpのエイリアスをオーバーライドするには、単純に引用符で囲むことができます。
'cp' -rf ./source/* /destination/
詳細については、次のリンクを参照してください。
http://www.wallpaperama.com/forums/cp-command-problems-forcing-overwrite-using-cp-command-t5685.html
http://bytes.com/topic/unix/answers/865372-force-cp-overwrite-existing-directory
を使用しrsyncます。ディレクトリを一方向に同期します。したがって、oldからのすべてでフォルダを更新したいnewが、そこにあるものを保持したい場合は、単に使用します:
rsync -avh --dry-run /path/to/new/ /path/to/old/
これは、最初に、転送されるファイルのリストを出力するだけです。その場合:に存在newするものoldを除き、にあるものはすべてにコピーされます。のすべてはoldそのままです。
見た目が良い場合は、--dry-run引数を削除して実際に送信してください。
-avhフラグはちょうど(タイムスタンプを保持します、など)アーカイブモードを有効にし、冗長性と人間が読み取り可能なファイルサイズ。--deleteフラグを指定しない限り、宛先から何も削除されません。詳細man rsyncについては相談してください。