linux拷贝软连接文件

时间:2024-02-25 13:13:51

在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 参数禁止创建稀疏文件。