Sử dụng robocopy và loại trừ nhiều thư mục


60

Tôi đang cố sao chép một số thư mục từ máy chủ trước khi khôi phục từ bản sao lưu (bản sao lưu mới nhất của tôi bị hỏng, vì vậy tôi phải sử dụng một thư mục cũ hơn :(). Tôi đang ở trong Môi trường phục hồi Windows và có quyền truy cập vào tệp của máy chủ hệ thống G:\và phương tiện sao lưu của tôi C:\. Nhưng, vì tôi quen thuộc hơn với Linux, nên tôi gặp một chút rắc rối với dòng lệnh trong Windows, đặc biệt robocopy.

Tôi muốn sao chép nhiều thư mục (duy trì cùng cấu trúc thư mục) từ G: \ sang C: \ trong khi loại trừ các thư mục khác (cụ thể là các thư mục Windows và Chương trình tệp). Tôi không thể tìm ra cú pháp cho /XDtùy chọn. Tôi đã hy vọng làm một cái gì đó như:

robocopy G: C:\backup /CREATE /XD "dir1","dir2", ...

LƯU Ý: Tôi muốn làm rõ rằng tôi muốn sao chép các tệp thực tế trong khi vẫn duy trì cấu trúc thư mục. Tôi chỉ kiểm tra, và /createchỉ tạo các tập tin trống. Kỳ dị.

Câu trả lời:


90

Tôi đã tìm ra nó với một chút thử nghiệm và lỗi và /L(để kiểm tra lệnh trước khi thực hiện nó). Lệnh tôi kết thúc là:

robocopy G: C:\backup /MIR /XD G:\dir1 "G:\dir 2" G:\dir3 ...

Rõ ràng, bao gồm cả dấu gạch chéo giữ cho bản sao lưu phân tích chính xác danh sách các thư mục, do đó hãy chắc chắn không bao gồm dấu gạch chéo trên tên thư mục và nhớ đặt dấu ngoặc kép quanh các thư mục có khoảng trắng trong tên.

Các /MIRtùy chọn duy trì cấu trúc thư mục giống nhau khi sao chép các tập tin.

Chỉnh sửa: Sau một số nghiên cứu thêm, tôi đã cải thiện lệnh một chút:

robocopy G: C:\backup /MIR /Z /LOG:C:\todaysdate-backup.log /XF *.iso *.log *.au /XD G:\dir1 ...

Các bổ sung như sau:

  • /Z cho phép công việc được khởi động lại
  • /LOG:<logfile path> là khá tự giải thích.
  • /XF đang được sử dụng để loại trừ các kiểu tệp nhất định nên không mất quá nhiều thời gian

1
Bạn luôn có thể sử dụng công /?tắc để nhận thông tin trợ giúp cho các lệnh của bảng điều khiển Windows. Ngoài ra còn có helplệnh, tương tự như manchương trình của Linux , nhưng tôi chưa thấy nó được sử dụng bởi các chương trình của bên thứ ba (có thể là - tôi không quen với cách thức hoạt động của nó, hoặc thậm chí là có thể).
Ben Richards

Hey, cảm ơn vì lời nhận xét. Tôi nghĩ rằng có một helplệnh, nhưng nó dường như không hoạt động trong Môi trường phục hồi Windows (Tôi đã nhận được một lỗi như "Không tìm thấy lệnh 'trợ giúp'). Robocopy là một lệnh mặc định của windows thay thế xcopy và không phải là bên thứ ba.
GorrillaMcD

1
Tôi biết đó là lệnh Windows chứ không phải bên thứ 3. Tôi chỉ đưa nó vào đó chỉ vì mục đích tham khảo trong tương lai, vì bạn nói rằng bạn không quen thuộc với môi trường lệnh của Windows. :)
Ben Richards

2
làm rõ: /MIR(Gương A đến B) phá hủy mọi tệp trong B không có trong A. Điều này hữu ích khi thư mục bạn đang sao chép đã tồn tại và bạn muốn phiên bản mới (của B) là bản sao chính xác của A (như nó hiện đang tồn tại).
SherylHohman

4

Tôi biết điều này không trả lời câu hỏi của OP, nhưng với bất kỳ ai ở đây từ google: XD sẽ thất bại trong tệp công việc nếu bạn sử dụng dấu ngoặc kép.

Xấu:

::
:: Exclude These Directories :
::
    /XD     :: eXclude Directories matching these names
        "Temporary Internet Files"

Tốt

::
:: Exclude These Directories :
::
    /XD     :: eXclude Directories matching these names
        Temporary Internet Files

Đặt nhiều loại trừ như bạn muốn, dòng sau dòng, mà không sử dụng dấu ngoặc kép (cho dù có khoảng trắng hay không).

Cách tôi phát hiện ra điều này là bằng cách sử dụng công tắc dòng lệnh / TIẾT KIỆM: myjobname đã trích dẫn các thư mục được trích dẫn của tôi!


4

bạn phải lặp lại /XDmột phần

C:\>robocopy "C:\Users\weberjn\Google Drive" "u:\Google Drive" /e /dcopy:t /copy:DT /r:0 /XD "C:\Users\weberjn\Google Drive\photos" /XD "C:\Users\weberjn\Google Drive\Google Photos"

1

Giải pháp của tôi cho việc này là tạo các tệp .txt có chứa các tệp hoặc thư mục tôi muốn bao gồm hoặc loại trừ. Tôi có các tệp này trong thư mục con "RCXcludes" trong thư mục "Sao lưu". Phương pháp của tôi để đặt tên các tập tin như sau. Tôi mở đầu chúng bằng "rc" (cho robocopy), sau đó một số ký hiệu dễ nhận biết cho ứng dụng hoặc một phần của hệ thống tệp trong lệnh robocopy, sau đó thêm "B" hoặc "R" (cho Sao lưu hoặc Khôi phục), sau đó "Tôi" hoặc "X" (đối với Bao gồm hoặc Loại trừ), sau đó "D" hoặc "F" (đối với Thư mục hoặc Tệp). Tôi bao quanh mỗi mục với dấu ngoặc kép và khoảng trắng giữa các mục. Tệp "Bao gồm" có thể có tệp hoặc thư mục, nhưng thư mục phải có dấu gạch chéo ngược. Trong tệp "Loại trừ" cho các thư mục bạn không sử dụng dấu gạch chéo ngược. Bất kỳ mục nhập thư mục đều liên quan đến đường dẫn nguồn trong lệnh robocopy. Toàn bộ nội dung của bất kỳ tệp .txt nào phải nằm trên một dòng vàkhông có một nguồn cấp dữ liệu trở lại carraige. Trong tệp bó của tôi, tôi sử dụng lệnh SET / P để nhập tệp .txt vào một biến. Sau đó tôi sử dụng các biến này cho LỌC hoặc sau / XF hoặc / XD. Chẳng hạn, để sao lưu hồ sơ Chrome của người dùng hiện tại mà không sao chép toàn bộ thư mục "Mặc định", tôi sử dụng như sau.

rcChromeBIF.txt  
"Bookmarks" "Custom Dictionary.txt" "Extension Cookies" "Favicons" "History" "Login Data" "Preferences" "Top Sites" "Visited Links" "Web Data" "Databases\" "Extensions\" "Local Storage\" "Plugin Data\" "User Scripts\" "User StyleSheets\"

rcChromeBXF.txt  
"Bookmarks.bak" "ChromeDWriteFontCache" "Cookies" "Cookies-journal" "Current Session" "Current Tabs" "Extension Cookies-journal" "Favicons-journal" "Google Profile.ico" "History Provider Cache" "History-journal" "Last Session" "Last Tabs" "Login Data-journal" "Network Action Predictor" "Network Action Predictor-journal" "Network Persistent State" "Origin Bound Certs" "Origin Bound Certs-journal" "QuotaManager" "QuotaManager-journal" "README" "Secure Preferences" "Shortcuts" "Shortcuts-journal" "Top Sites-journal" "TransportSecurity" "Web Data-journal"

rcChromeBXD.txt  
"Application Cache" "Cache" "data_reduction_proxy_leveldb" "Extension State" "File System" "GPUCache" "IndexedDB" "JumpListIcons" "JumpListIconsOld" "Local Extension Settings" "Media Cache" "Pepper Data" "Platform Notifications" "Service Worker" "Session Storage" "Storage" "Thumbnails" "Web Applications"

Trong tệp bat trong, giả sử, C: \ Backup.

REM ChromeBak.bat
SET chromeprofdir=Google\Chrome\User Data\Default
SET /P rcChrmBIF=<C:\Backup\rcXcludes\rcChromeBIF.txt
SET /P rcChrmBXF=<C:\Backup\rcXcludes\rcChromeBXF.txt
SET /P rcChrmBXD=<C:\Backup\rcXcludes\rcChromeBXD.txt
robocopy "%LOCALAPPDATA%\%chromeprofdir%" "H:\ChromeBackup\%chromeprofdir%" %rcChrmBIF% /E /ZB /COPY:DAT /DCOPY:T /MT:4 /XJ /XF %rcChrmBXF% /XD %rcChrmBXD% /R:10 /W:2 /TBD /NP /V /TS /Log+:"H:\ChromeBackup\ChromeBackup.log"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.