Symlink

當目標目錄存在時使用命令 cp -rsf 複製源目錄

  • September 16, 2018

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

這意味著源目錄本身被複製到目標中,但我希望它的內容被複製(就像目標目錄不存在時一樣)

解決方法是-T 根據man添加

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

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

如果目標目錄存在,它會複製其中的符號連結。好處是如果目標中有其他文件,它們保持不變。

引用自:https://unix.stackexchange.com/questions/469364