aynı zamanda şu şekilde bi problem daha var.Ftp ye atacağı dosyayı bi dizin içerisinde her dakikada kontrol ediyor.o dizinde dosya bulduğunda tranfer işlemine başlıyor.Ama transfer edeceği dosya daha tam oluşturulmadan transfer işlemine başladığı için dosyayı eksik göndermiş oluyor.Bu problemi nasıl aşabilirim.
2011/10/26 Akın Temel <[email protected]> > Selam , > > Mailiniz için teşekür ederim.Şu şekilde bir perl script buldum.Problemsiz > çalışıyor.Aktardığı dosyaları silmeden önce başka bi dizine de kopyalamak > istiyorum.Bu konuda yardımcı olabilirmisiniz. > > > ( http://aplawrence.com/Unixart/perlnetftp.html ) > ---------------------------------------------------------------- > > #!/usr/bin/perl > use strict; > use Net::FTP; > # > # Following variables are needed > my $directory="/ftpdir"; > my $logfile="/ftp.log"; > my $destination="test.com"; > my $login="testuser"; > my $password="test123"; > my $putdir="/ftp/FTP/"; > my $delay=60; > # > # program starts here > # > my $ftp; > my $newerr; > my @files; > my $file; > my $filecount; > my $line; > my $date; > chdir($directory) or die("$! Can't cd to $directory"); > while (1) { > @files=(); > $newerr=0; > logit("Starting new loop"); > foreach(<*>) { > push @files,$_; > } > my $filecount=@files; > logit("$filecount files to transfer"); > if (not $filecount) { > logit("Nothing to do"); > sleep $delay; > next; > } > $ftp=Net::FTP->new($destination,Timeout=>240) or $newerr=1; > if ($newerr) { > logit("Can't connect to $destination"); > sleep $delay; > next; > } > $ftp->login("$login","$password") or $newerr=1; > if ($newerr) { > logit("Can't login $destination with $login,$password"); > "ftpput.pl.bcl" 82 lines, 1854 characters > #!/usr/bin/perl > use strict; > use Net::FTP; > # > # Following variables are needed > my $directory="/akin/ftpdir"; > my $logfile="/akin/xfer.log"; > my $destination="212.174.150.218"; > my $login="yatasftp"; > my $password="Yatas!2011"; > my $putdir="/vg_yatas/ftp/FTP/akin/"; > my $delay=60; > # > # program starts here > # > my $ftp; > my $newerr; > my @files; > my $file; > my $filecount; > my $line; > my $date; > chdir($directory) or die("$! Can't cd to $directory"); > while (1) { > @files=(); > $newerr=0; > logit("Starting new loop"); > foreach(<*>) { > push @files,$_; > } > my $filecount=@files; > logit("$filecount files to transfer"); > if (not $filecount) { > logit("Nothing to do"); > sleep $delay; > next; > } > $ftp=Net::FTP->new($destination,Timeout=>240) or $newerr=1; > if ($newerr) { > logit("Can't connect to $destination"); > sleep $delay; > next; > } > $ftp->login("$login","$password") or $newerr=1; > if ($newerr) { > logit("Can't login $destination with $login,$password"); > $ftp->quit; > sleep $delay; > next; > } > $ftp->binary(); # set binary mode > $ftp->cwd($putdir) or $newerr=1; > if ($newerr) { > logit("Can't cd to $putdir on $destination"); > $ftp->quit; > sleep $delay; > next; > } > foreach(@files) { > $file=$_; > $newerr=0; > $ftp->put($file,$file) or $newerr=1; > if ($newerr) { > logit("Error transferring $file"); > next; > } > unlink($file) or logit("$! can't unlink $file");; > > } > > # delay for next loop > sleep $delay; > } > > sub logit { > $line=shift; > $date=gmtime(time); > open(LOG,">>$logfile") or die("$! Can't open $logfile"); > print LOG "$date: $file @files $line\n"; > print "$date: $file @files $line\n"; > close LOG; > } > > > ---------------------------------------------------------------------------------------- > > 2011/10/26 Uğur Engin <[email protected]> > >> Merhaba, >> >> Belirttiğiniz isteklerin bir kısmını mysql db dosyalari icin yapan ftp >> baglanti destekli bir script betigi hazirlamistim. >> >> http://www.ugurengin.com/blog/mysql-datalarinin-uzak-ftp-sunucuya-yedeklenmesi.html >> >> Belli bir zaman dilimi icin yine bash ile if'li bir kod yazip kontrol >> islemi yapilabilir. >> >> İncelemenizi tavsiye ederim. >> >> 2011/10/26 Akın Temel <[email protected]> >> >>> Selamlar , >>> >>> Unix üzerinde bir dizindeki dosyayı ftp ile gönderebilecek , gönderdiği >>> dosyanın doğruluğunu kontrol edecek , hangi tarihte ve saatte gönderdiği >>> logunu yazacak sonra o dosyayı başka bi dizini kopyalayıp >>> silicek.Göndereceği dizini her 10 dakikada bir kontrol edecek eğer yeni >>> dosya var ise yine aynı işlemleri uygulayacak. >>> >>> Bu işlemleri yapabileceğim bi script elinde olan yada önerebileceği başka >>> bi yöntem varsa ve paylaşırsa çok memnun olurum. >>> >>> >>> Saygılarımla >>> >>> _______________________________________________ >>> Linux-sunucu E-Posta Listesi >>> [email protected] >>> >>> Liste kurallarını http://liste.linux.org.tr/kurallar.php bağlantısından >>> okuyabilirsiniz; >>> >>> Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen >>> e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 >>> dakika içinde üyeliğinizi sonlandırabilirsiniz. >>> https://liste.linux.org.tr/mailman/listinfo/linux-sunucu >>> >>> >> >> _______________________________________________ >> Linux-sunucu E-Posta Listesi >> [email protected] >> >> Liste kurallarını http://liste.linux.org.tr/kurallar.php bağlantısından >> okuyabilirsiniz; >> >> Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen >> e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 >> dakika içinde üyeliğinizi sonlandırabilirsiniz. >> https://liste.linux.org.tr/mailman/listinfo/linux-sunucu >> >> >
_______________________________________________ Linux-sunucu E-Posta Listesi [email protected] Liste kurallarını http://liste.linux.org.tr/kurallar.php bağlantısından okuyabilirsiniz; Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 dakika içinde üyeliğinizi sonlandırabilirsiniz. https://liste.linux.org.tr/mailman/listinfo/linux-sunucu
