Linux中cp和scp命令的使用方法

Linux中cp和scp命令的使用方法
cp命令:
用途:在同一台电脑上复制文件。

基本格式:cp [OPTIONS] SOURCE DEST 或 cp [OPTIONS] SOURCE... DIRECTORY
常用选项:
-a:递归复制,保持属性。

-r:递归复制目录。

-f:强制覆盖目标文件。

范例:
cp aaa bbb:复制aaa为bbb。

cp .c /Finished/:复制所有.c文件到/Finished/。

scp命令:
用途:跨Linux系统安全复制文件,基于ssh。

基本格式:scp [OPTIONS] file_source file_target
常用选项:
-v:显示过程。

-C:压缩传输。

-P:指定端口。

-r:递归复制目录。

从本地到远程:
scp local_file username@remote_ip:remote_folder
scp -r local_folder username@remote_ip:remote_folder
从远程到本地:
scp username@remote_ip:remote_folder local_file
scp -r username@remote_ip:remote_folder local_folder
范例:
scp /home/daisy/full.tar.gz root@1 7 2 .1 9 .2 .7 5 :/home/root
scp root@1 7 2 .1 9 .2 .7 5 :/home/root/full.tar.gz /home/daisy/
scp -r /home/space/music root@www.cumt.edu.cn:/home/root/others/
注意事项:
确保用户有读取权限。

防火墙限制需指定端口:scp -P 4 5 8 8 remote@www.abc.com:/usr/local/sin.sh /home/administrator
scp比cp多ssh认证步骤。

linux中cp命令

哎哟,说起来这cp命令啊,真是Linux里头一个挺实用的文件管理命令。
主要作用就是复制文件或者目录。
咱们来具体说说。

首先,这cp命令能干啥呢?它能让你一次性把好几个文件拷贝到指定的目录里去,这对我来说,就挺方便的。
比如说,我去年夏天的时候,把一堆照片都拷到了我的旅游相册里。

然后呢,这cp命令还能把多个文件复制到特定的文件名,或者拷到已经存在的目录里。
记得有一次,我有个朋友把他写的论文发给我,我就直接用cp命令复制了一份到我的文档里。

再来聊聊这些常用参数吧:

f这个参数,你要是用了它,目标文件如果已经存在了,就直接覆盖原文件。
我上次拷贝一个脚本,就用这个参数,直接把旧的覆盖掉了。


i参数呢,如果目标文件已存在,它就会问你是不是要覆盖。
这对我来说挺好的,免得不小心覆盖了重要文件。


p参数,它能让源文件或目录保留所有属性。
我记得有一次,我拷贝一个配置文件,用了这个参数,保证了文件的所有属性都保留下来了。


r或R参数,这个是递归复制的意思,一般用来复制目录。
像我这儿,有时候得复制整个项目文件夹,就会用到这个。


d参数,当复制符号连接时,目标文件或目录也会变成符号连接,指向原始文件或目录。
我以前没太懂这参数,后来用了几次,就明白了。


l参数,它会对源文件建立硬连接,而不是复制文件。
这个参数我用得比较少。


s参数,这个和l有点像,也是建立连接,不过它是符号连接。


b参数,覆盖已存在的文件目标前,会先备份。
这个挺有用的,有时候不想覆盖重要文件,可以用这个参数先备份。


v参数,这个参数是详细显示cp命令执行的操作过程,挺有用的,能让你看到每一步都做了啥。

最后呢,这cp命令的基本语法是cp[参数][文件]。
你想要实现不同的文件复制操作,就可以组合这些参数。
对我来说,这cp命令真的挺实用的,解决了不少文件管理的小麻烦。

Linux中使用cp命令进行强制覆盖的方法

三种方法都能强制覆盖。

方法一:用unalias cp解除别名。
临时有效,比如unalias cp;然后cp file1 file2
方法二:用绝对路径执行。
比如/bin/cp file1 file2 直接敲/bin/cp然后Tab补全。

方法三:用yes管道。
比如yes|cp file1 file2 yes会不停输入y。

你自己掂量。

日更第2天:Linux常用命令之cp用法

说实话,Linux里的cp命令就是干复制活的,跟Windows那套复制粘贴一个意思。
但用起来得注意点,我给你捋捋。

---
怎么用最基本的那种 cp 源文件 目标文件 比如 cp mydoc.txt /home/user/newdoc.txt 这就把mydoc.txt复制到user家目录下的newdoc.txt
要是复制整个文件夹 cp -r 源目录 目标目录 比如 cp -r photos /backup/ 这就把photos整个包(包括里面的照片和文件夹)全搬到backup里
注意这点特别重要 单文件复制到目标的时候:
目标要是文件夹,文件就放进去
目标要是文件名,直接就盖过去覆盖掉
多文件复制必须目标是个文件夹,不然会报错。
我上次就犯这错,复制三个文件想直接盖一个文件,结果直接卡死,气死我了。

---
常用选项
-r 就是递归复制,复制文件夹时连子文件夹都整进去。
cp -r oldnotes /newnotes oldnotes下所有文件都进newnotes
-i 覆盖前会问你"要不要盖",输入y就继续。
cp -i pic.jpg /home/ home里如果有个pic.jpg,会弹出"pic.jpg already exists overwite? [y/n]
-f 直接盖,不管三七二十一。
cp -f report.docx /share/ share里不管啥文件,直接盖成report.docx
-a 归档模式,保留所有花活儿(时间戳啊权限啊)。
cp -a config /backup/config backup里的config会跟原来的几乎一样,连所有者都一样
-p 保留基本属性,时间戳权限啥的,但所有者信息不保留。
cp -p data.txt /safe/ safe里的data.txt时间啊权限都跟原来一样
-l 不复制内容,造个硬链接。
cp -l report.docx /temp/report.docx temp下多了个链接,源文件内容和temp里这个文件内容一样,但不是复制过去的
-v 过程会报出来让你看。
cp -v /home/notes /cloud/ 会一行行显示"copying notes/funny.jpg"啥的
---
用的时候小心这几点 1 . 复制文件夹必须加-r,不加会直接报错说"omitting directory" 2 . 多文件复制目标必须目录,不能是文件名 3 . 目标目录写权限不够会直接报Permission denied,用sudo改下就行
例子 备份整个网站目录: cp -r /var/www/ /backup/
只复制文件不目录: cp /var/log/.log /archive/
---
其实就这些,多试试就熟了。
我刚开始用cp时也老出问题,特别是多文件复制必须目录这点,坑过我好几次。