FTPサーバーのディレクトリから最も古いファイルを削除するcronジョブを作成したいと思います。最初のシェルスクリプトを作成しました。
#!/bin/sh
# connect to backup FTP server...
lftp -u (username),password backup.contabo.net << EOF
cd /backups
ls
EOF
これは私が得たものです。http://image.prntscr.com/image/72a86bf453c849a8af4a3340e4936172.jpeg
いくつかの検索を実行し、VPSのテストフォルダ内の端末でテストすると(新しく作成された.txtファイルを含む)、次の行が機能します。
rm "$(ls -t | tail -1)"
...しかし、シェルスクリプトに入れて実行すると、次のような結果bash testing.sh
が出ます。
rm: アクセスに失敗しました: 550 index.php: そのファイルまたはディレクトリがありません。
スクリプトがindex.phpを削除しようとしているのはなぜですか?ファイルリストにも見えません。削除する必要があります01December_01_2016_html.tar
編集する さて、いよいよファイル削除に成功しましたが、ファイル名を手動で作成することになりました。
rm /backups/01December_01_2016_html.tar
それで、まずファイル名を含む変数を作成して渡すことができるようにしたいと思います。rm /backups/$FILENAME.tar
以下のコードでエラーが発生するため、そうしません。Unknown command 'FILENAME="testing.sh"
これは基本的に同じです。つまり、FTPディレクトリの代わりにローカルディレクトリにある最新のファイルをインポートします(単一ファイルがls
すべてのファイルを正しく検索しても)。
FILENAME="$(ls -t | tail -1)"
echo $FILENAME