之前介绍pscp的文章已经很多了,这里纯属废话一遍,总之呢,简单的说,pscp就是putty套件中一个使用sftp和scp来远程拷贝文件的工具,也就是PuTTY Secure Copy client,由于大家坚信AES-256的牢不可破(其实说不定美国那几爷子早就有了破解算法故意不告诉大家),所以这个Secure还是比较有意义的,既然是远程copy,大家肯定已经了解了这个工具的使用范围,可以用于上传数据:关键性主机的数据更新(因为不允许未加密的数据传输嘛),可以用于推送数据:远程数据备份,之所以这个不叫下载而叫推送,是因为这是主机在上传,不是客户机在上传,也不是客户机在下载。
也许有人更喜欢用通过ssh隧道转发只对本地开放的ftp来 传输文件,毕竟用惯了Windows的人去敲命令行那简直不如让他去死,这种方法在上传数据的时候没有什么不同,可用,而且广泛可用,但在远程数据备份这块,就毫无意义可言了。没有人工干涉的远程备份一般有以下几个原因:
1,服务器所在地没有备份主机(备份主机硬盘满同理,汗),远程有备份主机。
2,需要备份的主机是Ghost host,额,也就是说,它的IP在变动。
3,需要备份的文件是随机生成的,备份主机无从知晓它生成了什么东西……汗。
远程备份数据是一个很折衷的办法,合理的网络布局应该把所有的服务器放在一个机房,而中国特色的网络利益人为分割,导致了广州到北京的距离比广州到美国还要远,当然大家理解为崇洋媚外也没什么问题,花大力气建设中美海底光纤而不花大力气建设国内互联互通的光纤,不是崇洋媚外是什么?扯得太远了,下面以我博客的备份脚本来解释一下pscp的应用:
——
#!/bin/sh
cd /home/ken/babyken
tar –exclude=bbken.org/files/media -cf bbken.org.tar bbken.org
bzip2 -9 bbken.org.tar
mv bbken.org.tar.bz2 bbken.org.$(date +%Y%m%d-%H%M%S).tar.bz2
mv *.bz2 /home/ken/babyken/backup
cd /home/ken/babyken/backup
/usr/local/bin/pscp -i priv_key.ppk *.bz2 [email protected]:/disk3/backup/node68
rm -f bbken*.bz2
——
首先呢自然是切入网站根目录上级,进行打包操作,由于这个MP3文件太大,我就不备份音乐了,在tar的时候把文件夹exclude,可以减少百分之八十的数据总量,也就是说,网站程序和日志大概只有接近两百兆的样子,打包完成后呢就进行压缩操作,使用bz2进行压缩级别最高的压缩……但是我发现文件似乎也小不了多少,回头用7zip压缩看看,接下来把压缩好的文件按照当前日期和时间重新进行命名,也就是那串(date +%Y%m%d-%H%M%S),Unix shell中的时间格式比Windows cmd中的时间格式清晰明白多了,然后呢,就是把已经压缩好并且按照时间命名的文件推送到远程服务器上去,这个命令是:
pscp -i priv_key.ppk *.bz2 [email protected]:/disk3/backup/node68
这个命令的意思呢,就是把当前目录的bz2文件全部推送到主机node66.bbken.org上的/disk3/backup/node68目录中去,使用的登录验证方式是密钥对验证,登录用户名字是ken,密钥的名字是priv_key.ppk,当然,你也可以用密码来验证,考虑到用户密码定期会进行更改,定期去修改这个脚本中的用户密码是一个很重复的工作,使用密钥对就很简单了,甚至可以分发十几个密钥下去给不同的用户,不需要用户的时候直接在备份主机上删除密钥对就可以(似乎和密码登录也差不多……)。
当然了,这一切的前提是你必须先安装了putty,因为putty在*inx操作系统中不是标准配置,如果需要推送文件到不同的主机,你甚至可以调用putty-agent,将密钥对全部装进去。
下面简要的介绍一下另外一个小工具,plink,这个小工具看起来似乎没什么用处,但其实用处大着呢,很早之前我们讲过使用ssh隧道转发可以突破移动WAP网关对于浏览器的封锁,不久之前我们讲过很多管理员喜欢在Windows下使用ssh隧道端口转发来访问只对本地开放的ftp服务器以便传输文件,这个小工具就可以满足在*nix下进行端口转发的需求,更准确的说,plink就是*nix下的putty,当然了,没人会在*nix下去刻意使用putty,NND不是脑子进水嘛,只讲一下Windows下的使用,只需要一行命令,就可以实现端口转发,使用代理服务器或者传输文件啦!
plink -i priv_key.ppk [email protected] -L localhost:3128:localhost:3128
这个命令的意思是,用户ken使用密钥对priv_key.ppk登录到主机node66.bbken.org,并将服务器上只对本地开放的3128端口转发到我的电脑上来,然后我们设置浏览器的代理服务器为本地的3128端口,就可以通过服务器去进行访问啦,当然你可以转发其它的端口,诸如ftp呀,www呀,如果你在电信,访问联通的服务器速度奇慢,而这台服务器是多线,你甚至可以将联通服务器的SSH端口转发到本地来,以便快速的管理,而命令自然不会是-L了,而是-R。
不要忘记第一次连接主机的时候存储fingerprint哦~