差分FTPを考える(9 – 削除
削除機能を考えてみました。
最後にハッシュをファイルに保存する直前に実行します。
# 削除 while ( my($key ,$value) = each %btmp ){ if (exists $ftmp{$key}){ }else{ print qq(del $key\n); $ftp->delete($key); } }
%btmpは前回のハッシュです。
前回のハッシュのキー(つまりファイルパス)をすべて取り出して
%ftmp(今回のハッシュ)の中にそのキー(ファイルパス)があるかないかをチェックしていきます。
あった場合にはスルー、
なかった場合には削除を行います。
ファイルを転送する際はちゃんとそのディレクトリに移動(cwd)しないとうまく転送できません。
つまり、a.txtというファイルをtest/a/b/のディレクトリにputしたい場合は、
- test/a/b/ にCD
- a.txt をput
としなければなりません。「test/a/b/a.txt」として転送、と一発でいってほしいところですが、NGとなってしまいます。
こう考えると転送先の「test/a/b/a.txt を削除」はエラーになりそうですが、
削除する場合はこれで行けるようです。
その為CDはしていません。
2017/09/27 22:55:48 [put] ./2/4/cc.txt del ./2/4/c.txt
これは、./2/4/c.txt というファイルを ./2/4/cc.txt と変更してみた場合の結果です。
cc.txtは新規と認識されますので、転送されます。
その後、./2/4/c.txt はなくなっていると認識され、削除されます。
どうやらうまく動いているようです。
ディスカッション
コメント一覧
まだ、コメントがありません