我發現關於複製文件這個問題(在這裏),而不會覆蓋複製文件夾,而不會覆蓋
How do you copy a file in PHP without overwriting an existing file?
我需要的是一個PHP腳本將所有文件複製在文件夾,有還有一些子文件夾;所以它應該是遞歸的。
我需要通過FTP傳輸它,所以我不知道這對方法有很大的影響。
非常感謝!
我發現關於複製文件這個問題(在這裏),而不會覆蓋複製文件夾,而不會覆蓋
How do you copy a file in PHP without overwriting an existing file?
我需要的是一個PHP腳本將所有文件複製在文件夾,有還有一些子文件夾;所以它應該是遞歸的。
我需要通過FTP傳輸它,所以我不知道這對方法有很大的影響。
非常感謝!
function recurse_copy($src,$dst) {
$dir = opendir($src);
@mkdir($dst);
while(false !== ($file = readdir($dir))) {
if (($file != '.') && ($file != '..')) {
if (is_dir($src . '/' . $file)) {
recurse_copy($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
注意,該解決方案將愉快地覆蓋中存在的$dst
目錄中的任何文件。如果你想避免這種情況,你可以將this question中的代碼封裝到一個函數中,然後調用該函數而不是copy
。
我不確定你想通過FTP傳輸什麼,如果你澄清我很樂意編輯我的答案。
非常友善,thx的答覆。此解決方案是否適用於FTP? 我想用SQL數據庫文件(相當大的文件...)傳輸幾個文件夾。 我會在不同的服務器上運行腳本,然後運行數據庫所在的服務器。目的地是另一臺服務器。 覆蓋應該完全避免,因爲文件太大了。 提前謝絕! – laurens 2009-11-12 10:17:23
我對你的評論有點困惑 - 抱歉,如果我密集。如果你想從遠程文件夾中獲取文件,那麼你需要做更多的工作(參見'ftp_get'和'ftp_nlist');如果你想把這些文件放到遠程服務器上(所以你需要從源服務器上運行備份過程),那麼請參閱'ftp_put'。但埃德的權利 - PHP絕對不是這項工作的工具。 – 2009-11-12 10:48:18
我的不好。顯然我需要尋找一個bash解決方案(?) – laurens 2009-11-12 10:52:53
有系統副本和FTP之間有很大的區別複製,你可以看看在PEAR FTP Class
我可以問它是什麼,需要這是用PHP編寫的腳本。似乎使用rsync會爲您所付出的努力提供更好的里程。 – 2009-11-12 10:28:12
我需要複製SQL服務器數據庫文件(.bak等),所以非常大的文件。我正在運行腳本的服務器,作爲目標服務器上的文件所在的源服務器是Linux服務器。 我正在考慮PHP,因爲所有其他腳本都在PHP中,但歡迎其他建議。 Thx – laurens 2009-11-12 10:37:07