題 在Linux上同步遠程文件夾


什麼是Linux系統上存在的文件夾的單向增量同步的最簡單方法。

使用命令行+1。 +2不使用rsync(似乎在我的系統上有一些問題。)


4
2017-07-17 09:47


起源


你對rsync的問題究竟是什麼? - innaM
以來 rsync 很可能是最簡單的答案,解釋你遇到的問題。 (無論如何,問題可能會蔓延到任何其他解決方案。) - Telemachus


答案:


CSYNC 是一個專為您,普通用戶設計的文件同步器。

csync是一個庫,默認情況下是命令行客戶端。它是無服務器的,並允許通過其中任何一個同步 sftp 要么 samba

用法示例:

csync /home/csync smb://csync:secret@rupert.galaxy.site/Users/csync
csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync

7
2017-07-17 09:50



該 csync 命令由。提供 csync-owncloud ubuntu包。 (sudo apt-get install csync-owncloud  libcsync-plugin-sftp libcsync-plugin-smb 如果你也想要它們) - ThorSummoner
因此,這會根據需要進行一次性同步。我沒有找到任何有關如何使用它來監視和持續同步目錄的信息。 - ThorSummoner


我認為你應該用rsync來解決你的問題,這是unixes經過驗證的真正的“同步化工具”。

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

注意: 對於雙向同步,您可以使用 齊奏 以及 CSYNC


7
2017-07-17 09:49



+1,但這對我來說只是一個部分答案。如果你需要使用 rsync 通過ssh,使用 rsync -uav --delete -e ssh remoteuser@remotehost:/remote/dir /this/dir/ - zelanix


這就是我用裸工具進行單向同步的方法。

一開始, 柏油 整個文件集並將它們複製到目標點。
另外,在基目錄中設置標記。

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 ./filename 告訴 柏油 僅存檔修改或創建的文件 filename 被修改/創建。
    • 使用本地參考時間確認你沒有錯;如果由於某種原因沒有採取備份,下一個將累積它
    • 您可以將此腳本設置為 的cronjob 在源計算機上輸入
    • 我假設你會用 scp 同 公鑰認證
    • 也假設你可以達到 backup-server 每當發布此腳本時。
    • 為了更安全,您可以添加檢查以確認備份已存儲,然後發出 touch 命令
    • 您也可以選擇插入命令來擴展覆蓋它們的備份,使其覆蓋在目標點上的先前備份上;或者,保持增量 tar.bz2 檔案。

2
2017-07-17 10:15





我使用這個簡短的腳本來監視並不斷地將目錄與遠程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
2017-10-24 07:55