2011-05-13 65 views
6

我有一些主機的在線帳戶,它給我的FTP帳戶用戶名和密碼。如何通過FTP在rsync中複製所有文件

我有另一個copany給了我FTP和rsync。

現在我想通過rync將所有文件從舊FTP傳輸到新FTP。

現在是有可能通過rsync這樣做只是因爲我不想第一臺計算機上覆制,然後再上傳

+0

你對一個或兩個主機殼? – sarnold 2011-05-13 03:25:56

+0

我只有一臺主機上的ftp,SFTP,rsync,SCP,其他主機上的SSH – Mahakaal 2011-05-13 03:48:27

回答

13

允許調用本機只有FTP src

讓我們用FTP和SSH撥打電話dst

ssh dst 
cd destination-direction 
wget --mirror --ftp-user=username --ftp-password=password\ 
    --no-host-directories ftp://src/pathname/ 

注意,在命令行上運行--ftp-passwordwget放棄密碼系統上的任何人。 (除了轉移過來的不清楚線,但你是知道的。)

如果沒有wget訪問,那麼他們可能有ncftplftpftp安裝。我只是碰巧知道wget最好的。 :)

編輯要使用ftp,你需要做更多的事情,如:

ftp src 
user username 
pass password 
bin 
cd /pathname 
ls 

在這一點上,注意在遠程系統上的所有目錄。用!mkdir創建每一個。然後在本地和遠程切換到目錄:

lcd <dirname> 
cd <dirname> 
ls 

重複所有目錄。使用mget *獲取所有文件。

如果這看起來很糟糕,那是因爲它。 FTP並不是爲此設計的,如果你的新主機沒有更好的工具(一定要尋找ncftplftp,或許就像ftpmirror),那麼你可以自己編譯更好的工具,或者善於編寫糟糕的工具工具。 :)

或者如果你能在src上得到一個shell,那也會非常有幫助。 FTP只是不打算傳輸數千個文件。

無論如何,這避免了在本地系統中彈跳,這應該有助於顯着提高吞吐量。

+0

我沒有wget但是有ftp,如何用ftp更改ur命令 – Mahakaal 2011-05-13 04:15:37

+0

我在網上有另一臺linux主機,我想我需要首先wget所有文件,然後從那裏使用rsync到目的地 – Mahakaal 2011-05-13 04:28:55

+0

哦,是的,這聽起來好多了。 :)你也可以在中間系統上tar文件,假設你已經有了驅動器空間,然後在中間人主機之間傳輸一個_single_文件。那會比很多時候擊敗'rsync'。 :) – sarnold 2011-05-13 04:31:28

4

總有可靠的FUSE文件系統,CurlFtpFSSSHFS。用適當的文件系統裝載每臺服務器,並使用標準實用程序進行復制。可能不是最快的方法,但很可能是最少的勞動密集型。

1

我正在尋找一種簡單的解決方案,通過FTP將遠程文件夾同步到本地文件夾,同時只更換新文件。我被困一點點wget腳本基礎上的sarnoldanswer,我認爲可能是幫助他人,也因此在這裏它是:

#!/bin/bash  
HOST="1.2.3.4" 
USER="username" 
PASS="password" 
LDIR="/path/to/local/dir" # can be empty 
RDIR="/path/to/remote/dir" # can be empty 

cd $LDIR && \    # only start if the cd was successful 
wget \ 
    --continue \    # resume on files that have already been partially transmitted 
    --mirror \     # --recursive --level=inf --timestamping --no-remove-listing 
    --no-host-directories \ # don't create 'ftp://src/' folder structure for synced files 
    --ftp-user=$USER \ 
    --ftp-password=$PASS \ 
    ftp://$HOST/$RDIR 
相關問題