ターゲットディレクトリが存在する場合は、cp -rsfコマンドを使用してソースディレクトリをコピーします。

ターゲットディレクトリが存在する場合は、cp -rsfコマンドを使用してソースディレクトリをコピーします。

On でCentos 7次のコマンドを使用する場合:

 cp -rsf /path/of/source /path/of/target

宛先ディレクトリが存在する場合、ファイルは/path/of/target/source

これをどのように避けることができますか?

編集する:

  1. ソースと宛先はディレクトリです。
  2. シンボリックリンクは私の環境要件を満たしています。ストレージスペースを節約するにはシンボリックリンクが必要です。

たとえば、

  1. mkdir /home/admin/test; mkdir /home/admin/test/1; touch /home/admin/test/1/1.txt;
  2. mkdir /home/admin/test2; mkdir /home/admin/test2/1; touch /home/admin/test2/1/1.txt;
  3. cp -rsf /home/admin/test/1 /home/admin/test2/1
  4. ls /home/admin/test2/1

結果:

drwxrwxr-x 2 admin admin 4096 Sep 16 15:57 1 -rw-rw-r-- 1 admin admin 0 Sep 16 15:56 1.txt

私はこの結果が欲しい:

lrwxrwxrwx 1 admin admin 24 Sep 16 16:03 1.txt -> /home/admin/test/1/1.txt

これは、ソースディレクトリ自体がターゲットにコピーされますが、その内容もコピーしたいという意味です(ターゲットディレクトリが存在しないかのように)。

答え1

-T 解決策は追加することです。男性

-T, --no-target-directory treat DEST as a normal file

cp -rsfT /path/of/source /path/of/target

ターゲットディレクトリが存在する場合、その中にシンボリックリンクがコピーされます。これの利点は、ターゲットに他のファイルがある場合は変更されていないことです。

関連情報