我是新來的Python,所以原諒我,如果這是基本的,我已經搜索,但無法找到答案。我試圖將Perl腳本轉換爲連接到遠程服務器的Python(3.x),並將給定目錄中的文件複製到本地計算機。轉移的完整性至關重要,並且內置了幾個步驟以確保完整和準確的轉移。是否可以通過SSH使用os.walk?
第一步是獲取要傳遞給rsync的文件的完整列表。 Perl腳本具有以下行來實現:
@dir_list = `ssh [email protected] 'find $remote_dir -type f -exec /bin/dirname {} \\;'`;
@file_list = `ssh [email protected] 'find $remote_dir -type f -exec /bin/basename {} \\;'`;
兩列被然後join
版創建$ full_list。
而不是開放兩個單獨的ssh
情況下,我想開一個,用os.walk
獲取使用信息:
for remdirname, remdirnames, remfilesnames in os.walk(remotedir):
for remfilename in remfilesnames:
remfulllist.append(os.path.join(remdirname, remfilename))
感謝您的幫助,您可以提供。
除非'remotedir'掛載在某個地方,'os.walk'沒有辦法達到它。 –
你是否指''dirlist'行的'-type d'?我認爲下面的@Bryan註釋,你可以基於從python調用ssh來計算dir_list和file_list。 – nealmcb
如果你不需要任意的邏輯(即真正的Python代碼)來處理要複製的文件列表,那麼只要使用普通的rsync和includes/excludes/filters,你就會更加簡單和健壯。 – mnagel