[Linux 相关文章] 使用lftp来同步(备份)数据
转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]
本文链接: http://www.php-oa.com/2009/07/21/lftp_mirror.html
管理的一个存储坏了,有部分数据不能正常的读出来.实在没法恢复了.只能备份.但不正常的文件夹只要操作过,就会让这个硬盘都不能读,需要重新mount.所以必须跳过那些不能正常访问.
所以写了个小脚本来备份.使用du来检查,跳过不能操作的文件,给还完好的文件进行备份
#!/usr/bin/perl
use strict;
use File::Spec;
die "需要一个参数" unless($ARGV[0]) ;
open FILE,"ls $ARGV[0]|" or die "fail $?";
while(<FILE>){
my $path = File::Spec->catfile("$ARGV[0]","$_");
chomp($path);
my $stat = system("du","-sh","$path");
if($stat == 0){
system("lftp -u user,passwd -e \"mirror -R ‘$path’ –ignore-time –verbose && quit\" IP");
}
}
要使用就指定要备份的目录就行了.
#perl syncftp.pl /data/9/mnt/
根据经验,ftp比rsync快很多,以后如果有大量数据备份,还是考虑使用ftp好了.我的1000M的网络,他直接用光.实在是快.
以上最重要的一句是lftp -u user,passwd -e \"mirror -R ‘$path’ –ignore-time –verbose && quit\" IP.这个是使用lftp这个超好用的ftp客户端,在本地判断跳过文件后,使用它来传送资料,使用的他的反向镜像的功能.只使用文件大小对比.
非常建议需要大量备份数据时,使用lftp的mirror的功能.有关lftp的另外的详细使用请看我原来的文章强大的lftp.


















