2010-09-27 64 views
32

Tôi đang di chuyển một kho lưu trữ từ nguồn an toàn sang phiên bản lật đổ và tôi cần đảm bảo rằng các điểm quan trọng đều bằng nhau. Có bất kỳ lệnh/công cụ hiện có nào cho các cửa sổ cho phép tôi so sánh hai cây thư mục mà chúng bằng nhau (có cấu trúc thư mục bằng nhau và các tệp có cùng nội dung) không? Lý tưởng sẽ là một số dòng lệnh như:Cách tốt nhất để so sánh 2 cây thư mục trên cửa sổ là gì?

some_cool_compare c:\current_vss c:\current_svn -exclude .svn;*.vspscc;*.scc 

Có một số công cụ/lệnh tồn tại hoặc tôi cần viết kịch bản của riêng mình không?

+0

Xem thêm http://superuser.com/questions/31345/what-is-the-best-directory-diff -tool – Marijn

+0

@Marijn Liên kết đã bị xóa. Bạn có thể viết câu trả lời với thông tin đã bị xóa không? – user5389726598465

+0

Xin lỗi, tôi không thể nhớ lại. – Marijn

Trả lời

30

Nếu bạn có thể sử dụng công cụ GUI, tốt nhất tôi đã thử là WinMerge - nguồn mở.

Nếu không, thì diff là bạn của bạn.

+0

Công cụ GUI là tốt, nhưng hiện tại tôi có một tập tin thực thi kiểm tra các điểm quan trọng cho cả hai nguồn an toàn và lật đổ, và nó có rất nhiều điểm như vậy. Việc tích hợp công cụ dòng lệnh vào thử nghiệm sẽ thích hợp hơn. – grigoryvp

+2

sau đó ... diff là bạn của bạn ... một cái gì đó như thế này: http://gnuwin32.sourceforge.net/packages/diffutils.htm – Palantir

+0

Tôi biết chủ đề này là cũ, nhưng tôi đi qua nó trong khi tìm kiếm các câu hỏi chính xác OP hỏi. Hiện tại là mùa hè năm 2016. Tôi đã so sánh ** WinMerge ** với ** ExamDiff ** Pro. Tôi thích ExamDiff vì nhiều lý do (ví dụ: có "nút cấp thư mục"). Ngoài ra, trên WinMerge trong "Tập tin và thư mục" so sánh bộ chọn nó không cho phép bạn chọn một thư mục với gui (bạn phải dán vào đường dẫn thư mục). Tôi đang sử dụng bản dùng thử [ExamDiff 8.0] (http://www.prestosoft.com/edp_examdiff.asp) Pro (30 ngày). Hy vọng rằng sẽ giúp một số bạn. –

23

Beyond compare cho phép bạn làm điều đó và hơn thế nữa.

Đó là một trong những công cụ tôi không thể sống thiếu.
Hãy xem here cho một tài liệu tham khảo về các tùy chọn kịch bản

+0

Một phiên bản dùng thử này đã làm việc khá tốt cho tôi cho một nhiệm vụ tôi đã có. Có vẻ như giấy phép bắt đầu từ 30 đô la Mỹ. –

6

Như Tôi miễn cưỡng trong việc cài đặt các chương trình mới vào máy tính của tôi, kịch bản PowerShell này (từ Hey, Scripting Guy! Blog) đã giúp tôi giải quyết vấn đề của tôi. Tôi chỉ sửa đổi đường dẫn đến phù hợp với trường hợp của tôi:

$fso = Get-ChildItem -Recurse -path F:\songs 
$fsoBU = Get-ChildItem -Recurse -path D:\songs 
Compare-Object -ReferenceObject $fso -DifferenceObject $fsoBU 
+1

rất đẹp, nhưng sloooooow :) –

+0

Cực kỳ chậm. Tôi có một thread hoàn toàn sử dụng một lõi trong một vài giờ mà không cần truy cập đĩa. Và không có phản hồi về tiến bộ. Vì vậy, hủy bỏ thí nghiệm. Tôi cần một cái gì đó cách nhanh hơn và thực tế hơn. – user643011

0

Giống như OP, tôi đang tìm kiếm một công cụ diff thư mục Windows, trong một cụ thể mà có thể xử lý cây rất lớn (100s của Gigabyte dữ liệu). Cảm ơn Lieven Keersmaekers cho con trỏ đến BeyondCompare, mà tôi thấy là rất nhanh (khoảng 10-100 lần nhanh hơn) so với công cụ học cũ cũ của tôi windiff.

BTW, BeyondCompare không có chế độ dòng lệnh ngoài GUI.

2

Bạn cũng có thể thực hiện tree > tree.txt trong cả hai thư mục và sau đó phân biệt cả tệp tree.txt với bất kỳ công cụ khác dựa trên tệp nào (git diff).

1

SyncToy là một ứng dụng miễn phí của Microsoft có chế độ "Xem trước" để so sánh hai đường dẫn. Ví dụ:

SyncToy Preview screenshot (source: https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2010/06/synctoy-preview.png)

Sau đó bạn có thể chọn một trong ba chế độ ("Đồng bộ hóa", "Echo" và "Đóng góp") để giải quyết sự khác biệt.

Cuối cùng, nó đi kèm với SyncToyCmd để tạo và đồng bộ hóa cặp thư mục từ CLI hoặc Tác vụ theo lịch.

+0

Tôi đã thử cài đặt SyncToy nhưng nó khẳng định rằng nó cần một phiên bản cũ của khung công tác .NET được cài đặt (v2.0.50727). Tôi dường như đã cài đặt v4.7.1 hoặc mới hơn! Tôi không tin tưởng phần mềm cũ để bảo mật, vì vậy tôi sẽ thử một công cụ khác. –

+1

Một mối quan tâm hợp lệ! Nhưng .NET Framework (thậm chí 2.0) vẫn được Microsoft hỗ trợ đầy đủ. Không cần cài đặt thủ công — bạn có thể [kích hoạt nó trực tiếp trong Bảng điều khiển của Windows 10] (https://docs.microsoft.com/en-us/dotnet/framework/install/dotnet-35-windows-10#enable- bảng điều khiển-net-framework-35-in-control). –

0

Bạn có thể sử dụng git cho đúng mục đích này. Về cơ bản, bạn tạo một kho git trong thư mục A (repo là A/.git), sau đó sao chép A/.git đến B/.git, sau đó đổi thành thư mục B và so sánh đơn giản bằng cách chạy git diff. Và chức năng --exclude có thể đạt được với .gitignore.

Vì vậy, gắn bó với ví dụ của bạn (nhưng sử dụng vỏ bash trên Linux):

# Create a Git repo in current_vss 
pushd current_vss 
printf ".svn\n*.vspscc\n*.scc" >> .gitignore 
git init && git add . && git commit -m 'initial' 
popd 

# Copy the repo to current_svn and compare 
cp -r current_vss/.git* current_svn/ 
pushd current_svn 
git diff 
Các vấn đề liên quan