2012-12-10 93 views
4

我無法找到任何可靠的文件同步程序爲我的Mac,所以我一直在兩個文件夾之間使用命令行Rsync。有關使用Rsync的幾個問題?

我一直在使用「rsync -r源目標」。

- 此同步文件是雙向還是同步文件,還是隻同步到目的地? - 如果文件之前在兩個文件夾之間同步,但由於不再需要而被刪除,它會在源和目標上被刪除,還是隻會被複制到缺少的文件?

回答

4

否,rsync會將遠程目錄的內容同步到本地目錄。在這方面它是單向的。或者,您可以強制它刪除遠程文件夾中不存在的本地文件。

如果要保留兩臺機器上的最新更改,則必須提供更復雜的rsync咒語,並將兩臺機器都設置爲rsync服務器。我想這樣做最終會讓你陷入麻煩,特別是如果你想成爲專制而不是刪除。

在任何情況下,您都可以使用-u(或--update)選項,該選項將跳過目標端更新的任何文件。您不必擔心時間戳,這不會處理任何衝突或合併。仍然...它可能如此簡單:

rsync -u -r target1 target2 
rsync -u -r target2 target1 

這將不會做任何刪除操作。您無法知道一個目標上的丟失文件被刪除,而不是另一個目標上創建的新文件。

這就是版本控制被髮明的原因......對於害怕版本控制的人來說,存在像DropBox這樣的服務。

1

回答原來的問題:

1)只在一個方向由上拉或推送機制同步文件。 推拉機制,請參閱「」man rsync「」的手冊頁。

因此,對於您的問題的其餘部分,請不要假設它在兩種方式下都可以使用 。

2)該文件只在目標目錄上被刪除。 在rsync --help命令中獲得更多詳細信息,請參閱選項 - 刪除目標目錄 和其他刪除選項中的無關文件。

3)丟失的文件將被複制只是,如果你是推遠程機器/目錄/文件

推送機制樣品例如目標目錄: -

rsync -avz /home/local_dir/abc.txt [email protected]:/home/remoteuser/ 

如果名爲abc.txt的文件已存在於目標目錄中,然後根據它是本地端舊版本的abc.txt進行更新。 如果abc.txt在遠程目錄中不存在,則會使用本地版本的abc的內容創建一個名爲abc.txt的全新文件。TXT

的拉機制樣品例如: -

rsync -avz [email protected]:/home/remoteuser/abc.txt /home/local_dir/ 

如果一個文件的abc.txt命名已經存在於本地目錄,然後它會根據其更新爲舊版本的abc.txt的遠程或不是。 如果本地目錄中不存在abc.txt,則會創建一個名爲abc.txt的新文件,其中包含本地版本abc.txt的內容