scp
Linux scp 命令用于 Linux 之间复制文件和目录。
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。
scp命令我们会经常用到,这里不过多介绍。
下面我们以实战来说明。
scp拷贝目录
比如将本地~/Downloads
下的a目录拷贝到服务器/home/admin
下的命令如下:
scp -v -r -P 37682 -i ~/.ssh/私钥文件名 ~/Downloads/a [email protected]:/home/admin/a
注意拷贝目录,本地或远程目录a路径后的/可加或不加
远程a目录不存在,则自动创建
scp拷贝文件到目录
比如本地~/Downloads/a
下的1.txt文件拷贝到服务器/home/admin
下b目录下面的命令如下:
scp -P 37682 -i ~/.ssh/私钥文件名 ~/Downloads/a/1.txt [email protected]:/home/admin/b/
注意b目录后面必须要加/,否者只会讲1.txt的内容写入到b文件
远程b目录不存在,则自动创建
参数说明
- -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
- -r: 递归复制整个目录。
- -P: port,注意是大写的P, port是指定数据传输用到的端口号
- -i:identity_file, 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
rsync
rsync特性
- 高效地复制同步数据到对端,或者对端到本地
- 支持复制链接、设备、属主、属组、权限
- 断点续传和增量传输:传比scp(Secure Copy)更快。rsync使用远程更新协议( remote-update protocol ),这允许仅仅传输两组文件之间的差异。对于首次传输,它将文件或目录的全部内容从源复制到目标,但是从下次起,它仅将变化部分复制到目标。
- Rsync消耗较少的带宽,因为它使用压缩和解压缩方法,同时发送和接收数据两端。HTTP压缩技术
rsync将本地文件同步到服务器
下面我们利用rsync的断点续传和增量传输特性来同步文件。
下面我们以实战来说明。
- 将本地a目录下面的文件同步到服务器a目录
rsync -Pav --exclude-from="exclude.list" -e "ssh -p 37682 -i ~/.ssh/私钥文件名" ~/Downloads/a/ [email protected]:/home/admin/a
注意远程路径最后加不加/都一样
注意本地路径最后不加/,拷贝的是本地a目录到远程a目录下面
注意本地路径最后加/,拷贝的是本地a目录下面的文件到远程a目录下面
没有文件需要同步的输出结果:
building file list ...
708 files to consider
sent 15454 bytes received 20 bytes 6189.60 bytes/sec
total size is 69712456 speedup is 4505.13
有文件需要同步的输出结果:
building file list ... b
708 files to consider
./
.gitignore
44 100% 0.00kB/s 0:00:00 (xfer#1, to-check=706/708)
APP/
APP/download.htm
18609 100% 17.75MB/s 0:00:00 (xfer#2, to-check=677/708)
sent 34211 bytes received 232 bytes 22962.00 bytes/sec
total size is 69710079 speedup is 2023.93
参数说明
- -P: --partial,保留那些因故没有完全传输的文件,以是加快随后的再次传输
- -a:–archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
- -v:–verbose 详细模式输出
- -e: --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
- –exclude-from=FILE: 排除FILE中指定模式的文件
- –include-from=FILE: 不排除FILE指定模式匹配的文件