現在、FTPサイトからファイルをダウンロードするbashスクリプトがあります。私がダウンロードするすべてのファイルのマニフェストを保持し、マニフェストにない新しいファイルのみをダウンロードするようにスクリプトを修正したいと思います。 bashでこれを行う方法はありますか、あるいは私はbashが実際にできることの限界を押していますか?Bash以前にダウンロードしていない場合にのみFTPからファイルをダウンロードするスクリプト
答えて
私の提案は、ダウンロードしたいファイルのリストを取得し、それをあなたのマニフェストと比較してから、マニフェストにないものをダウンロードすることです。このような何か作業をする必要があります:
ftp [email protected] <<EOF
ls * filelist.txt
EOF
cat filelist.txt | awk '{print $9}' | tail -n +3 > filenames.txt
while IFS= read -r file
do
if [[ ! $(grep "$file" manifest.txt) ]]; then
echo "$file is not in manifest"
fi
done < "filenames.txt"
はもちろん、あなたがfilelist.txt
とfilenames.txt
は、適切なパスを含めるように変更する必要があります。また、echo
コマンドを変更して、実際のダウンロードに使用する別のファイルまたは変数にファイル名を追加します。ここで
は何が起こっているのかの説明です:
最初の3行は、(あなたが正しいディレクトリを指すように*
を変更することをお勧めします。)ファイルのリストをつかむためにftp
を使用
cat
行は、ftp ls
コマンドの出力を解析して、ファイル名部分だけを取得し、別のファイルに格納します。
その後、whileループはファイルのリストを調べ、grepを使用して、ファイル名がマニフェストファイルに存在するかどうかを確認します。表示されない場合は、ダウンロードしてマニフェストに追加できます。
は、ご質問があれば私に教えてください。
希望すると便利です。
ありがとうございます!新しくダウンロードしたファイル名でManifestを更新する最良の方法は何でしょうか?どうも! – Danny
マニフェストに格納したい情報に応じて、次のようなことができます: 'echo" $ file - $(date) ">> manifest.txt' - 二重引用符(" '' ")は出力をファイルに付加することを意味し、' $(date) 'はdateコマンドの出力を取得します(' Tue Apr 18 10:34:52 PDT 2017'のようになります)。 –
- 1. ftpディレクトリのファイルを読み込み、ダウンロードしないスクリプト
- 2. ファイルが見つからない場合にのみダウンロードする
- 3. ftpからファイルをダウンロードするには?
- 4. FTPからローカルストレージにファイルをダウンロードする
- 5. pythonスクリプトを使用してFTPロケーションからディレクトリ/ファイルをダウンロード
- 6. ファイルを解凍してftpからダウンロード
- 7. ftpサーバーからファイルをダウンロード
- 8. xmlファイルをFTPからダウンロード
- 9. FTPサーバーから存在しないファイルをダウンロードする
- 10. ローカルファイルが古い場合にのみファイルをダウンロードする方法
- 11. ファイルをダウンロード中のPHPが壊れています(FTPサーバからダウンロード中)
- 12. Android FTPクライアントアプリケーション - FTPサーバからファイルをダウンロードするには
- 13. C#でFTPからファイルをダウンロードする
- 14. FTPからファイルをストリーミングして同時にダウンロードさせる
- 15. FTPからZIPファイルをダウンロードし、ウェブサイト内のフォルダにコピーする
- 16. nodejsのftpサーバーからファイルをダウンロード
- 17. LVL - 「マーケットからダウンロードしてからfinish()」をダウンロードしなかった場合
- 18. FTPサーバーから複数のファイルを確認してダウンロードする
- 19. FTP - ウェブサイトとして表示する場合、クライアントがWARファイルをダウンロードする
- 20. 名前に特定の単語を含むFTPサイトからファイルをダウンロードする
- 21. Rを使用してftp-serverからSASファイルをダウンロードする
- 22. ruby sinatraでftpからcsvファイルをダウンロード
- 23. Axapta 2012 - FTPからファイルをダウンロード - タイムアウト
- 24. Node.js公開FTPからファイルをダウンロード
- 25. ファイルをJavascript経由でFTPからダウンロード
- 26. URLにファイルIDのみが含まれている場合、Webサーバーからファイルをダウンロードする方法
- 27. リモートFTPサーバーからWCFでファイルをダウンロードしてストリーミングする
- 28. ftpからローカルに毎日ダウンロードする
- 29. FTPファイルをクライアントにダウンロードするReadfile()
- 30. Powershell WinSCP FTPスクリプトは、8つのファイルのうち1つのみキャッシュされたファイルをダウンロードしています
これは、探しているスピードと関連するファイルの数によって異なります。私は毎分数千のファイルをチェックするようなものを書きました。リストを保持し、受信したサイズをリストされたサイズと比較します。 lftpを使ってかなりうまく動作します。しかし、シンプルなケースではrsyncを使うことができます。 –
残念ながら、ローカルのファイルはアーカイブに移動されますが、リモートのファイルは時折移動されるため、ここでrsyncをオプションにすることはできません。私はこれを1日に2〜3回行うだけで、ファイルの数は約1〜10(そして10は多くです)になる可能性があります。あなたが助けることができたら、私はlftpのために開いています。ありがとうございました! – Danny
ええ。コードは約500行で、/ private/dataを持っていますが、基本的には 'ls'コマンドにlftpを使用し、その出力と比較します(ソートと2つの 'while'インターリーブされたbashループを介して)次のlftpの 'get'スクリプトファイルを作成します。 –