web-dev-qa-db-ja.com

FTPサーバーからネットワーク共有ドライブにファイルを移動するシェルスクリプトを作成する方法

FTPサーバー(Ubuntu 9.10マシン)に大量のデータをアップロードするお客様がいます。ファイルがアップロードされると、私はそれらをローカルのDroboshareネットワークドライブに転送して、テクニカルサポートスタッフがファイルを取得して問題を分析できるようにします。

/media/<sharename>にネットワーク共有をマウントした後、このコマンドを手動で実行してこれらのファイルを取得します。

Sudo mv /home/ftp/<data_dir>/<file_name> /media/<network_share>/<ftp_user_data>

しかし、これには永久に時間がかかり、数十または数百のファイルがある場合、現実的にこれを何度も繰り返すことはできません。これらのファイルのグループをネットワーク共有に転送するために定期的に実行できるスクリプトがあればいいと思いました。テクニカルサポートスタッフが使用する順に並べ替えることができます。

私はまだLinuxに不慣れで、シェルスクリプトを作成しています。とにかくこれを簡単に行うには?ここに説明を追加すると、ファイルはZipファイルFASTAファイルTARになります。 .GZファイル、および/またはTXTファイル。また、Zipファイルが大きい場合、特定のZipプログラムはこれらをZip.001Zip.002Zip.003など...したがって、このFTPディレクトリ内のファイルタイプは非常にさまざまです。

これらのファイルを特定する方法は、ディレクトリ内のすべてのファイルを転送する(これにはしばらく時間がかかる場合があります)か、完了時間などに応じてこれらのサブセットを指定することであると考えていました。

私はアイデアを受け入れます。前もって感謝します。

1
nicorellius

FTPフォルダをネットワークドライブの実際のマウントポイントにしないのはなぜですか? Linuxマシン上のVirtualMachinesを常にWindowsネットワーク共有にバックアップしている(会社のインフラストラクチャの大部分がWindowsであるため)ので、同様の問題に遭遇しました。これは私の構造です:

/media/windows-shareは私のマウントポイントです

継続性のために、バックアップアプリケーションにシンボリックリンクを作成しました。

/opt/backup/mntですから、将来マウントポイントが変更されても、プログラムを更新する必要はありません。

最後に、私は autofsSudo apt-get install autofs)というクールな小さなツールを使用します-そのガイドはまともです(そして最新です)-少し異なるアプローチでこれを使用しましたが私の blog に。

あなたの場合、FTPドロップボックスが(/home/ftp/<data_dir>/)の適切なネットワークフォルダーへのシンボリックリンクを作成し、/media/<network_share>/<ftp_user_data>の適切なネットワークフォルダーに移動します。これにより、ディスク間での転送に無駄な時間がなく、ファイルをすぐに利用できます。

5
Marco Ceppi

ここからそこ(またはここからここ)にファイルを複製する場合、 rsync はスイス軍のチェーンソーです。

4
msw

FTPなどにアップロードされたら、s inotifyなどのテクノロジーを使用して、ファイルの処理をすぐに試すことができます。 inoticomingは、そのために使用できるツールです。 http://manpages.ubuntu.com/manpages/lucid/man1/inoticoming.1.html を参照してください。

1
ℝaphink