APP下载

使用SCP命令传输文件

2019-12-22河南许红军

网络安全和信息化 2019年7期
关键词:备份命令密码

■ 河南 许红军

编者按:使用SCP (即Secure Copy Protocol)命令,可以在Linux下进行远程传输文件的功能。和CP等复制命令不同,SCP不仅可以跨服务器复制文件,还能够实现加密传输。在实际工作中,灵活的使用SCP命令,可以有效提高文件复制的效率。

实现SCP无密码传输

当使用SCP命令向远程主机传送文件时,默认是需要输入密码的,这给实际操作带来了繁琐。其实,在安全的环境中,使用无密码传输,可以大大提高效率。

例如,在Server1上执行“ssh-keygen -t rsa”命令,在提示信息中连续回车,选择默认存储位置并不设置密码。执行“ls.ssh/”命令,查看生成的密钥信息。进入该目录,执行“mv id_rsa.pub authorized_keys”命令,对公钥进行更名处理。

执行“chmod 600 .ssh/authorized_keys”命令,为其设置合适的权限。

注意,该公钥必须位于当前用户的家目录中的“.ssh”目录中,而且该“.ssh”文件夹的权限必须为700。

执行“scp .ssh/id_rsa root@x.x.x.x:~”命令,将私钥文件传送到Srver2主机上,“x.x.x.x”表示 Server2的地址。

在Server2主机行执行“mv id_rsa .ssh/”命令,将其移动到“.ssh”目录下。

这样,从Server2上使用SCP命令向Server1传输文件,是不需要输入密钥的,但是反之则不行。因为必须拥有对方的私钥文件,才可以无密码传输。

实现定时自动备份

在很多情况下,需要在指定的时间(例如凌晨等)执行数据备份任务,将SCP命令和定时任务结合起来,就可以很轻松的解决该问题。

执行“vi remotebacku p.sh”命令,创建脚本文件。

在其中输入“#!/bin/bash”,“time=`date+%F_%H-%M-%S`”“scp-r /home/data/ root@x.x.x.x:/home/backup_${time}”行,对指定目 录(如 /home/data/”)执行远程复制操作。其中“-r”参数标书复制整个目录。

为了提高备份的灵活性,避免备份的数据相互覆盖,这里通过记录备份时的时间信息,将其附加的目标文件的名称后面,来达到保存不同时间点备份文件的作用。

执行“crontab -e”命令,输入“0 1 * * * /bin/bash/root/scripts/remote_copy1.sh”等内容,在指定的时间(例如凌晨1点)执行该脚本文件。这样,当到达预设的时间后,就可以自动备份数据了。

利用分卷传输降低重传量

在使用SCP命令执行远程数据传输时,如果在期间出现异常情况(例如主机重启,SCP中断)时,即使在恢复之后是无法进行端点续传的。只有在出现网络中断时,在恢复之后才可以执行断点续传的。

如果在异地之间传输巨大的文件时,出现上述异常情况,导致数据复制失败,必须从头传输,这无疑会大大降低传输效率。

特别对于异地传输来说,问题尤为明显。利用分卷压缩功能,可以很巧妙的比快上述问题,将重传量降到最低。

执行“tar zcf - /data/|split -b 200m - data.tar.gz.”命令,将指定目录(这里为“data”目录)下的所有文件进行分卷压缩处理,没和压缩文件为200MB,分卷压缩文件以“data.tar.gz.a”开头。

将其存放到“tmp”目录中。执行“scp -l 8000 -r tmp/ root@x.x.x.x:/tmp”命令,将“tmp”目录中的所有分卷压缩文件传输到目标主机上,其中“-l”参数指定传输速率,这里为8MB每秒。

这样,就可以逐个传输分卷压缩包了。即使中途出现异常导致SCP命令失败,也可以从出现问题的某个分卷包开始传输,而不必传输所有的分卷包。当传输完毕后,在目标主机上执行“cat data.tar.gz.a*|tar zx”命令,执行解压缩操作,可以得到所有的文件。

高效传输大文件

对于体积巨大(例如上百GB等)的文件来说,使用SCP进行传输效能并不高。相比之下,使用bbcp这款工具,可以高效传输大文件,其可以点对点传输文件。

在两台主机上都需要安装该工具,执行“yum install wget openssl098e-y”命令,安装所需的包。

执行“wget http://www.slac.stanford.edu/~abh/bbcp/bin/amd64_linux26/bbcp -O /usr/bin/bbcp”命令,下载该工具,并将其安装到“/usr/bin/bbcp”目录下。

执 行“chmod +x /usr/bin/bbcp”命令,为其设置可执行权限。

例 如,执 行“dd if=/dev/zero of=dfile bs=100M count=60”命令,创建名为“dfile”大 小 为6GB的 文件,执行“bbcp dfileroot@x.x.x.x:/tmp”命令,使用bbcp将其传输到目标主机上。

如果以上配置了无密码传输功能,则无需输入密码。使用bbcp的断点传输功能,即使中途出错,在下次操作时也可以从断点处继续传输,这对于大文件额传输是极为重要的。

执行“bbcp -a -k dfile root@ x.x.x.x:/tmp”命令,可以实现断点续传功能,其中的“-k”参数表示保留所有未传输完成的文件,并允许在重试时进行覆盖,“-a”参数保留checkpoint信息用于校验文件的完整性。

执 行“bbcp -r -P 2/etc root@ x.x.x.x:/tmp”命令,可以以递归方式传输指定目录下的所有内容,并每隔2秒显示传输的进度,便于用户观察复制的过程。

如果发现传输的文件有误,例如,传输了错误的文件,可以强制进行删除。例如,执 行“bbcp -f -P 2 dfile oot@ x.x.x.x:/tmp”命令,可以强制删除已经传输的文件。

猜你喜欢

备份命令密码
密码里的爱
管理Windows10的PowerShell命令行使用记录
利用云备份微信聊天记录
如何只备份有用数据而不备份垃圾数据
Windows10应用信息备份与恢复
密码抗倭立奇功
移防命令下达后
解析Windows10的内部命令
密码藏在何处
旧瓶装新酒天宫二号从备份变实验室