web-dev-qa-db-ja.com

ローカルフォルダーの内容をftpフォルダーの内容と自動的に同期する方法は?

どこでも検索した後、私は私の質問に対する特定の答えを見つけることができませんでした。

Windowsには、 FTPbox というアプリケーションがあります。これは、設定された期間ごとにローカルフォルダーとftpフォルダーを自動的に同期します。

私の質問は、Ubuntuを使用して同じことをどのように達成するのですか?主なことは、ここで私が手動でそれをしなければならないことです。それは、人間の介入を必要としない完全に自動化されたプロセスである必要があります(明らかに、そのクラスが人間の介入LOLである場合、これを設定する必要があります)。

有益な回答を期待して感謝します。

-エドワード

9
Edward Nunn

最初の解決策

インストールlftp

Sudo apt-get install lftp

その後、スクリプトを作成します

#!/bin/bash
Host='mysite.com'
USER='myuser'
PASS='myuser'
TARGETFOLDER='/new'
SOURCEFOLDER='/home/myuser/backups'

lftp -f "
open $Host
user $USER $PASS
lcd $SOURCEFOLDER
mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
bye
"

upload.shという名前の場所に保存します。 +x許可を与えます。

Sudo chmod +x /path_to_script/upload.sh

crontab期間ごとにこのコマンドを実行するようにxを設定します

Crontabの実行を編集するため

crontab -e

5分ごとにコマンドを実行するためのコードは

 */5 * * * * /path_to_script/upload.sh

毎時間

 0 */1 * * * /path_to_script/upload.sh

午前4時に実行する

 0 4 * * * /path_to_script/upload.sh

ソリューション2

LFTPが読み取れるlftp-scriptという小さな簡単なスクリプトを作成します。

open ftp://username:[email protected]
mirror -v --only-newer /home/local/path/ /website.com/public_html/

最後に、LFTPを実行して、同期を開始できます。私が書くがコマンドを置くようにcrontabを設定する

lftp -f /path/to/lftp-script

このようなもの

 */5 * * * * lftp -f /path/to/lftp-script

ソリューション

インストールcurlftpfs

Sudo apt-get install curlftpfs

fTPをローカルにマウントするために必要なことは、これらのコマンドを実行してdirを作成することです。

mkdir hostr

リモートftpディレクトリをローカルにマウントします

Sudo curlftpfs -o allow_other ftp://user:[email protected] Host

user:passは、ftpアカウントにログインするためのユーザー名とパスワードです。

次の行を使用して、自動マウントのためにcurlftpfsfstabに追加できます。

curlftpfs#user:[email protected] /mnt/Host Fuse rw,uid=500,user,noauto 0 0
16
2707974