linux cp命令详解

cp命令:复制文件目录。

真事:2 02 0年系统维护,用cp备份日志。
数字:cp /var/log/syslog /backup/syslog。

覆盖:目标文件存在会被干掉。
递归:cp -r /source /dest。

别这么干:不加-r复制目录,结果只复制文件。
实操提醒:重要文件复制后,立刻验证。

linux cp命令详解

你说这 cp 命令啊,我当年刚上 Linux 的时候,也是对着手册琢磨半天。
记得那年头,我在北京的一家小公司,服务器管理没经验,老板急得跟热锅上的蚂蚁似的。

有一次啊,我要把一个项目的历史代码备份到新服务器上,那项目目录老大老大的,里面文件还不少。
我琢磨着,直接复制呗,用 cp 就行。
我就打开终端,敲了 cp -r /old_server/proj /new_server/,想递归地把整个目录搬过去。

结果呢?好家伙,新服务器上有个同名的目录,我忘了看。
这一复制,直接把新目录里的东西给覆盖了,那可好,辛辛苦苦整理的配置文件全没了。
我当场就傻眼了,赶紧跑去找老板承认错误,后来花了大半天时间才恢复回来。

这事儿让我印象特别深,所以现在用 cp 的时候,我肯定得先确认一下目标目录。
要是目标文件本来就存在,我一般都用 -i 参数,比如 cp -i old_file new_dir/,这样系统会问我“覆盖吗?”,我就手动确认一下,总比直接覆盖了后悔强。

哦对了,还有一次,我帮隔壁部门同事拷文件,他让我用 -f 参数,说那个目标文件肯定不存在。
我寻思着 -f 是强制覆盖,还挺方便的,就敲了 cp -f my_file /target/。
结果人家 /target/ 里明明有个 my_file.bak,直接就给覆盖了,而且没提示,同事后来发现文件没了,打电话来问我咋回事。
哎,你看,这 -f 也不能随便用,得看情况。

所以啊,用 cp 的时候,得根据实际情况选参数。
啥时候用啥参数,我这儿给你总结几个场景:
1 . 你要复制一堆文件到指定目录,而且目录肯定不存在,直接 cp file1 file2 dir/ 就行。
2 . 你要复制整个目录,包括里面的子目录和文件,而且目标目录不存在,用 cp -r src_dir dest_dir/。
3 . 你要复制文件,但目标文件可能存在,用 cp -i file1 file2 /,系统会问你。
4 . 你要强制覆盖目标文件,而且你确定目标文件不重要了,用 cp -f file1 file2 /。
5 . 你要保留文件的原始属性,比如修改时间啥的,用 cp -p file1 file2 /,这在新服务器上迁移配置文件的时候特别有用。

你看,这 cp 命令用好了省事,用不好就容易踩坑。
我这十年踩的坑,没少是为了省事儿没看仔细参数。
所以啊,朋友,用命令的时候,别光图快,小心一点总没错。

Linux文件管理:如何使用cp命令复制文件

Linux cp命令就这几种用法。

直接复制文件,目标文件有就覆盖。
cp source.txt destination.txt
要递归复制整个目录,必须加-r。
cp -r source_dir target_dir
想看详细过程,加-v。
cp -v source.txt destination.txt
保留文件原样,包括时间戳和权限,加-p。
cp -p source.txt destination.txt
覆盖前确认,加-i。
cp -i source.txt destination.txt
直接强制覆盖,加-f。
cp -f source.txt destination.txt
备份整个目录,用-r。
cp -r project/ backup/project_backup/
保留文件属性不变,用-p。
cp -p config.cfg /etc/config.cfg
符号链接默认复制内容,要保留链接本身,用-P(部分系统支持)。
cp -P link_file target_dir
注意:复制前确认下权限,别复制不了。
你自己看。