在linux環境下,對一個軟鏈接的文件作拷貝命令時,會存在引用路徑的不匹配;如下例子可以在拷貝出一個新的軟鏈接文件后,新軟鏈接會自動修改對應的引用路徑,但是只能在當前目錄下進行操作:
cp -s sourchfile targetfile
另外,拷貝/usr/bin/java這個符號連接所對應的實際文件,如下例子,值得注意的是新文件的名字是軟鏈接文件的名字,而不是實際文件的名字:
cp -L /usr/bin/java /root/bin/
參考附cp的使用手冊:
用法:cp [選項]... [-T] 源文件 目標文件 或:cp [選項]... 源文件... 目錄 或:cp [選項]... -t 目錄 源文件... Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. Mandatory arguments to long options are mandatory for short options too. -a, --archive 等於-dR --preserve=all --attributes-only 僅復制屬性而不復制數據 --backup[=CONTROL 為每個已存在的目標文件創建備份 -b 類似--backup 但不接受參數 --copy-contents 在遞歸處理是復制特殊文件內容 -d 等於--no-dereference --preserve=links -f, --force if an existing destination file cannot be opened, remove it and try again (this option is ignored when the -n option is also used) -i, --interactive prompt before overwrite (overrides a previous -n option) -H follow command-line symbolic links in SOURCE -l, --link hard link files instead of copying -L, --dereference always follow symbolic links in SOURCE -n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效) -P, --no-dereference 不跟隨源文件中的符號鏈接 -p 等於--preserve=模式,所有權,時間戳 --preserve[=屬性列表 保持指定的屬性(默認:模式,所有權,時間戳),如果 可能保持附加屬性:環境、鏈接、xattr 等 -c deprecated, same as --preserve=context --sno-preserve=屬性列表 不保留指定的文件屬性 --parents 復制前在目標目錄創建來源文件路徑中的所有目錄 -R, -r, --recursive 遞歸復制目錄及其子目錄內的所有內容 --reflink[=WHEN] 控制克隆/CoW 副本。請查看下面的內如。 --remove-destination 嘗試打開目標文件前先刪除已存在的目的地 文件 (相對於 --force 選項) --sparse=WHEN 控制創建稀疏文件的方式 --strip-trailing-slashes 刪除參數中所有源文件/目錄末端的斜杠 -s, --symbolic-link 只創建符號鏈接而不復制文件 -S, --suffix=后綴 自行指定備份文件的后綴 -t, --target-directory=目錄 將所有參數指定的源文件/目錄 復制至目標目錄 -T, --no-target-directory 將目標目錄視作普通文件 -u, --update 只在源文件比目標文件新,或目標文件 不存在時才進行復制 -v, --verbose 顯示詳細的進行步驟 -x, --one-file-system 不跨越文件系統進行操作 -Z, --context[=CTX] set SELinux security context of destination file to default type, or to CTX if specified --help 顯示此幫助信息並退出 --version 顯示版本信息並退出 默認情況下,源文件的稀疏性僅僅通過簡單的方法判斷,對應的目標文件目標文件也 被為稀疏。這是因為默認情況下使用了--sparse=auto 參數。如果明確使用 --sparse=always 參數則不論源文件是否包含足夠長的0 序列也將目標文件創文 建為稀疏件。 使用--sparse=never 參數禁止創建稀疏文件。