web-dev-qa-db-ja.com

Linuxでリモートフォルダを同期する

Linuxシステムに存在するフォルダーの単方向インクリメンタル同期を行う最も簡単な方法は何ですか。

コマンドラインを使用する場合は+1。 rsyncを使用しない場合は+2(システムに問題があるようです)。

6
Lakshman Prasad

csync は、通常のユーザーであるあなたのために特別に設計されたファイルシンクロナイザーです。

csyncはライブラリであり、デフォルトでコマンドラインクライアントを出荷します。サーバーレスであり、sftpまたはsambaのいずれかを介した同期が可能です。

使用例:

csync /home/csync smb://csync:[email protected]/Users/csync
csync /home/csync sftp://[email protected]:2222/home/csync
7
Robert Munteanu

私はあなたがrsyncであなたの問題を解決するべきだと思います。それはunixのための実証済みの真の同期ツールです。

rsync -uav --delete /loal/path example.com:/remote/path

注:双方向同期の場合、 nison および csync を使用できます。

7
hayalci

これは私が裸のツールで単方向同期を行う方法です。

開始時に、 tar ファイルのセット全体をコピーし、宛先ポイントにコピーします。
また、ベースディレクトリにマーカーを設定します。

touch /Source/base/directory/last-sync-time.txt

ここで、ソースから宛先への同期を維持したいと思います。

前方に同期するための次のタイムスロット(送信元から宛先へ)で、

# The backup script
cd /Source/base/directory
tar cfj -N ./last-sync-time.txt backup.tar.bz2 .
scp backup.tar.bz2 user@backup-server:/Backup/Directory/
touch /Source/base/directory/last-sync-time.txt
rm -f backup.tar.bz2
  1. -N ./filenametarfilenameが変更された後に変更または作成されたファイルのみをアーカイブするように指示します/作成した。
    • 時間にローカル参照を使用すると、間違いがないことが確認されます。何らかの理由でバックアップが取られなかった場合、次のバックアップがそれを蓄積します
    • このスクリプトは、ソースマシンの cronjob エントリとして設定できます。
    • scp公開鍵認証 で使用すると想定しています
    • また、このスクリプトが発行されるたびにbackup-serverに到達できると仮定します。
    • 安全のために、バックアップが保存されたことを確認するためのチェックを追加してから、touchコマンドを発行できます。
    • コマンドを挿入して、宛先ポイントで以前のバックアップの上にバックアップをオーバーレイするように展開することもできます。または、増分tar.bz2アーカイブを保持します。
2
nik

この短いスクリプトを使用して、ディレクトリを監視し、リモートのsftpフォルダと継続的に同期します。

#!/bin/sh
dir1=/home/user/folder
 while inotifywait -qqre modify "$dir1";
 do
    csync /home/user/folder sftp://remoteuser:remotepass@remoteaddress:remoteport/remotefolderpath
done
0
umetnic