Betiğin içine md5sum veya size kontrolü ekleyebilirsiniz.kısa bir aralıkla
kontrol eder.Size veya md5sum değişmediyse kopyalamayı gerçekleştirir.

26 Ekim 2011 14:21 tarihinde Akın Temel <[email protected]> yazdı:

> 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
>
>
_______________________________________________
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

Cevap