2009-03-17 6 views
-1

FTPサーバーに接続し、7日以上経過したすべてのファイルを削除するシェルまたはPerlスクリプトが必要です。FTPサイトにログインして7日以上経過したファイルを削除するにはどうすればよいですか?

歓声Perlで

+0

このRent-a-Coderとは何ですか? –

+0

find/

-type f -mtime +7 -exec rm {} \; – Neel

+1

Pythonを使用しても構わない場合は、[this](http://stackoverflow.com/questions/2867217/how-to-delete-files-with-a-python-script-from-a-ftp-server)をチェックしてください。 -what-are-older-7/3114477#3114477)の回答が関連する質問に含まれています。 – tzot

答えて

2

、あなたはNet::FTPのLSと、MDTMを使いたい、とコマンドを削除したいです。

4

Net::FTPモジュールを使用して、CPANドキュメントの概要に従ってFTPサーバーに接続します。サイトリストを参照するには、ディレクトリを処理するためにcwd/cdupを結合する必要があります(すべてのファイルがルートディレクトリに存在しない限り)。

これは

if($ftp->feature('MDTM')) { 
    ...check modification time for file... 
} 

を呼び出して、現在のサーバーでサポートされている場合だけではない場合は、あなたが呼び出してみてください確認してください、MDTM(FILE)メソッドを使用して、ファイルの更新時刻を取得するには'dir'メソッドを使用して、長形式のリストを取得し、比較および削除するために個々のファイルリストから日付情報を抽出します。

2つの日付を比較するには、Date::Calcモジュールを使用します。 'Delta_Days'の方法では、2つの日付間の日数がわかります。上記の方法のいずれかと同じようにこれを使うことができます。

1

あなたが後になっているシェルスクリプトの場合は、crontabでスクリプトを実行する方がよい場合があります。

find /tmp -type f -mtime +7 -exec rm {} \;

+0

あなたは彼がftpサーバ上でfindコマンドを取得することをどのように提案しますか? – aks

+1

彼は他の人と同じようにfindコマンドを取得します。可能であれば、対話シェルにログインします。 –

+0

ああ、右はそのミュートを考えなかった。シェルアクセスを持たないことに慣れていない、私はそうです。 –

関連する問題