我需要將相同的文件上傳到同一FTP中的2個不同位置。有沒有辦法將FTP上的文件複製到其他地方而不是再次上傳?謝謝。FTP將文件複製到同一FTP中的另一個地方
回答
我不認爲有一種方法可以在不下載和重新上傳的情況下複製文件,至少我在List of FTP commands中沒有發現任何類似的內容,也沒有我見過的客戶端支持類似的內容。
是的,FTP協議本身在理論上可以支持這一點。 FTP RFC 959在第5.2節中討論了這一點(請參閱以「當數據在兩臺服務器之間傳輸時,A和B ...」開頭的段落)。但是,我不知道任何提供這種雙服務器控制操作的客戶端。
請注意,此方法可以使用自己的網絡將文件從FTP服務器傳輸到自己,這不會像本地文件副本那樣快,但幾乎肯定會比下載然後重新上傳文件更快。
我設法做到這一點,使用WebDrive將ftp掛載爲本地文件夾,然後使用filezilla將文件直接「下載」到文件夾中。這比正常下載慢了一點,但你不需要在你的硬盤上有空間。
我認爲它會暫時將文件下載到您的機器,然後立即將其上傳到您的網絡驅動器。我懷疑你仍然需要足夠的磁盤空間來實現這一點。 – 2015-11-19 06:34:43
您可以重命名要複製到想要的結果的完整路徑的文件。
例如: 如果要移動的文件「file.txt的」到文件夾「NewFolder」你可以把它寫成
ftp> rename file.txt NewFolder/file.txt
這爲我工作。
這錯過了問題的重點 - OP明確詢問*複製*,而不是*移動* – codeling 2014-08-28 07:37:08
我可以在基於Linux的系統中的遠程文件夾之間複製文件。 在我的具體情況,我用很普通的文件管理器PCManFM:
- 菜單「開始」 - >「連接到服務器」
- FTP登錄信息等
- 打開新的標籤PCManFM
- 連接到同一臺服務器 從標籤到標籤
- 複製...
這是一個有點慢,所以我想,它可以被下載和上傳回文件,但它會自動完成並且非常用戶友好。
沒有通過FTP協議複製遠程文件的標準方法。一些FTP服務器支持專有或非標準擴展。
某些FTP客戶端確實支持遠程文件複製。使用擴展名或通過遠程文件的臨時本地副本。
例如WinSCP FTP client確實support the duplication同時使用拖&降和菜單/鍵盤命令:
- 它支持
SITE CPFR
/CPTO
FTP擴展 - 它回退到一個(由ProFTPD mod_copy module支持例如)如果上述擴展名不可用,則通過本地臨時副本自動複製。
(我的WinSCP的作者)
另一個解決辦法是打開FTP服務器的第二連接,使服務器上的文件上傳到自己通過管道被動模式數據連接到活動模式數據連接。此解決方案顯示在answer by @SaadAchemlal中。
我想感謝你的WinSCP真棒工具。 – Fatih 2016-03-14 10:18:58
您可以通過C-Panel進行此操作。
- 登錄到您的C-Panel。
- 進入文件管理器。
- 找到您想要複製的文件或文件夾。
- 右鍵單擊並選擇「複製」。
- 輸入您要複製到的新導演。
完成!
1)不要在您的帖子中留下'簽名',這是您的個人資料所在的位置2)C-Panel僅適用於特定情況。 – Glorfindel 2017-01-12 16:47:30
以下代碼使FTP服務器將文件上傳到自身(使用回送連接)。它需要FTP服務器來允許被動和主動連接模式。
如果你想了解這裏的FTP命令是它們的列表:List of ftp commands
function copyFile($filePath, $newFilePath)
{
$ftp1 = ftp_connect('192.168.1.1');
$ftp2 = ftp_connect('192.168.1.1');
ftp_raw($ftp1, "USER ftpUsername");
ftp_raw($ftp1, "PASS mypassword");
ftp_raw($ftp2, "USER ftpUsername");
ftp_raw($ftp2, "PASS mypassword");
$res = ftp_raw($ftp2, "PASV");
$addressAndPort = substr($res[0], strpos($res[0], '(') + 1);
$addressAndPort = substr($addressAndPort, 0, strpos($addressAndPort, ')'));
ftp_raw($ftp1, "CWD ." . dirname($newFilePath));
ftp_raw($ftp2, "CWD ." . dirname($filePath));
ftp_raw($ftp1, "PORT ".$addressAndPort);
ftp_raw($ftp1, "STOR " . basename($newFilePath));
ftp_raw($ftp2, "RETR " . basename($filePath));
ftp_raw($ftp1, "QUIT");
ftp_raw($ftp2, "QUIT");
}
@MartinPrikryl那麼讓我告訴你它的確行得通,因爲我在Synology Nas上使用這個人。此外,它確實回答了這個問題,因爲您只需要將文件上傳到FTP一次,並使用我的功能將其複製到任何地方,而無需再次上傳。 請在下次嘗試測試解決方案後再說它不會工作:) – 2017-10-17 13:24:00
對不起,您是對的,我沒有仔細閱讀代碼。雖然下一次,請在您的帖子中加入一些解釋,以避免混淆。 +1 +我已將你的答案與我的聯繫起來。 – 2017-10-17 14:29:41
我會盡力在下次解釋更多。感謝編輯;) – 2017-10-17 19:53:32
- 1. Php複製文件夾到ftp上的另一個地方
- 2. 將文件從一個ftp傳輸到另一個ftp
- 3. 複製或移動一個文件從一個FTP服務器到另一個
- 4. PHP將文件從一個FTP傳輸到另一個
- 5. FTPWebRequest:從一個FTP傳輸到另一個FTP,目標文件損壞
- 6. 將文件從一個FTP文件夾移動到同一FTP中的另一個文件夾的批處理文件?
- 7. 將文件上傳到FTP目的地
- 8. 發佈到FTP無法複製文件
- 9. ftp將多個大文件上傳到一個文件
- 10. 使用Python將文件從一個FTP位置傳輸到另一個位置
- 11. 批處理文件將文本文件複製到FTP站點
- 12. 用於將文件從一個地方複製到另一個地方的批處理文件
- 13. 將一半的文件複製到一個地方,另一半複製到其他c#
- 14. 將png文件從一個文件夾複製到另一個
- 15. 將x文件從一個文件夾複製到另一個
- 16. 如何將FTP文件移動到C#中的另一個目錄?
- 17. 上傳一個文件,然後將其ftp到另一臺服務器與PHP
- 18. 將文件從一個文件夾複製到同一個桶的s3中的另一個文件夾NODE JS
- 19. 到文件(FTP)
- 20. 從本地機器複製文件到FTP服務器c
- 21. 將S3中的對象從一個文件夾複製到同一個桶中的另一個文件夾
- 22. 在C++中將一個文件的內容複製到另一個文件中
- 23. 將文件夾從目錄複製到遠程FTP服務器上的另一個目錄
- 24. 用於將某些文件類型從一個地方複製到另一個地方的DOS命令
- 25. 從python中將文件從一個文件複製到另一個文件
- 26. 如何通過更改文件名將所有文件從一個ftp文件夾複製到sftp文件夾
- 27. 如何在PHP中將一個文件從ftp和transferer壓縮到另一個文件?
- 28. 用於複製ftp目錄的文件和子文件夾的FTP命令
- 29. 將動態遞增的日誌文件數據從FTP複製到本地
- 30. 如何創建將使用FTP將文件複製到另一臺服務器的腳本?
不知你用這個和指定本地主機,如果你能得到周圍輕微的瓶頸。即便如此,由於「FTP反彈攻擊」,我們需要考慮許多FTP服務器阻止FXP(也稱爲服務器到服務器的傳輸)。但是一個聰明的FTP服務器不會爲本地主機阻塞它。不過,它可能會阻止所有FXP。 – SilentSteel 2013-10-18 07:45:10