私はFTPプロトコルとコマンドラインだけを使ってDropbox / rsyncに似た機能をエミュレートできるソリューションを探しています。
一般的な問題は、非常に限られたLinux(実際にはNAS)で実行する必要があるため、GUIがないため、複雑なソリューション(実行するのに十分なリソースがない)および/またはGUIユーティリティをインストール/使用できないことです。そこに。 SSHはこのNASでも弱く機能し、ターゲットの1つには存在しません。
source
私にとって必要なのは、CRONを介して定期的に実行して、それがdestination
同じであることを確認できるコマンドライン(bash)スクリプトまたはプログラムです。
- 両側のファイルは両方にコピーされ、
- 同じ名前のファイルが2つ存在する場合は、最新バージョンのファイルを両方にコピーして、
- 一方から他方から欠落しているすべてのファイルを削除します。
もちろん、このソリューションが正常に機能するためには、ソースとターゲットの両方のすべてのサブフォルダの繰り返しをサポートする必要があります。両側に大きなディレクトリ構造があります。
多くのバックアップソリューションを試しましたが、ほとんどの場合、次のいずれかの理由で失敗しました。
- 両側の正確なコピーを作成して増分バックアップを提供する方法はありません。
- 非常に限られたLinuxディストリビューションでは、コマンドラインから直接実行することはできません。
誰かが私にUnisonを使ってみることを提案しました。これは本当に良いようですが、SSHを使用しており、私のターゲットの1つにSSH接続を確立することはできません(サポートされていません)。つまり、FTPアクセスが利用可能な唯一の方法です。
私にとって完璧なソリューションは、次のように実行できるもの(コマンドラインまたは構成)です。
something.sh path/to/local/folder ftp://user:[email protected]/path/to/folder
もし実際に存在していたら...
答え1
lftp
コマンドがあります(バックミラーmirror
も含む)。mirror -R
答え2
1つの一般的な事実:私が知っている限り、プロトコルはそれをサポートしていないので、ftpを使用してリモートタイムスタンプを設定することはできません。しかし、あなたの場合は、サーバー上のものよりも新しいデータのみを送信し、残りは維持したいので、これは問題ありません。
rsync
Ftpでヒューズとカールftpfsを使用できると思います。まず、ftpファイルシステムをローカルにマウントします。
curlftpfs -o user=username:password ftp://whatever.ftp/ mountpoint/
次に、rsync
一般的なローカルミラーリング方法を使用します。
rsync -azv source mountpoint/whatever/dir/
rsyncは、フォルダとファイルの同期を微調整するさまざまなオプションを備えた強力なツールです。
別のオプション: wput
;This (私の考えではwgetに対応するようです)比較できるリモートおよびローカルタイムスタンプの使用-Nオプション。また、wputはディレクトリを再帰的に転送するので、これが実際にあなたが探しているソリューションだと思います。例:
wput somedir ftp://user:[email protected]/remote/dir/
リモートサーバーに「somedir /」ミラーが作成されます。ローカルsomedirを変更せずにコマンドを再実行すると、ファイルは転送されなくなります。