Liên kết tượng trưng và 7zip


18

Tôi đang cố nén một thư mục vào kho lưu trữ .7z. Thư mục này chứa các liên kết tượng trưng đến một số nội dung khác bên ngoài thư mục (cả thư mục và tệp).

Rõ ràng 7zip chỉ lưu trữ chính liên kết đó không phải là điều tôi dự định. Có cách nào để nói với 7zip rằng tôi muốn nó lưu trữ những thứ mà nó liên kết đến, không phải chính liên kết đó không? (Đó là nếu có một tên symlink footrỏ đến C:\stuff\foo, tôi muốn nó bao gồm C:\stuff\foothư mục trong kho lưu trữ thay cho foo, không phải là symlink 0 byte.))

Có cách giải quyết hợp lý nào ngoài việc thêm các tệp và thư mục trong câu hỏi không? Có khoảng 10.000 tệp được tham chiếu qua các liên kết tượng trưng, ​​vì vậy việc thêm tất cả chúng sẽ mất hàng giờ. Có thể có một chương trình tạo thư mục dàn với các tệp thực trong đó và sau đó chuyển thành 7zip. Hoặc chỉ là một archiver xử lý symlink tốt hơn.

Tôi đang chạy Windows Vista. Tất cả các liên kết là các liên kết tượng trưng (ví dụ: được tạo bằng mklink link targetmklink /D link target).

BIÊN TẬP:

dir đầu ra lệnh cho một thư mục thử nghiệm nhỏ hơn:

C:\...>dir
 Volume in drive C is OS
 Volume Serial Number is 0A3D-CD6E

 Directory of C:\...

09/04/2010  18:12    <DIR>          .
09/04/2010  18:12    <DIR>          ..
09/04/2010  18:10               975 real file.txt
09/04/2010  18:11    <SYMLINK>      test file.txt [..\test file.txt]
               2 File(s)            975 bytes
               4 Dir(s)   5,214,355,456 bytes free

Tạo một kho lưu trữ 7z với kết quả 7zip real file.txtđược bao gồm, nhưng test file.txtđược thêm dưới dạng tệp 0 byte, mặc dù tệp được liên kết đến tồn tại và là 50KB.


Bạn đang sử dụng hệ điều hành nào?
Charles Gargent

2
Thẻ "windows" có gợi ý rằng tôi đang sử dụng không, windows cũng vậy ...
Fire Lancer

1
Ok, bạn đang sử dụng phiên bản windows nào?
Charles Gargent

@Fire Lancer: Nói chung, nên lặp lại bất kỳ thông tin nào từ các thẻ trong văn bản. Dễ đọc hơn và không phải ai cũng nhìn vào thẻ anh ấy (vì chúng ở phía dưới). Thêm vào đó, các thẻ có thể dễ bị hiểu lầm. Ví dụ, tôi có thể dùng Linux nhưng muốn tương tác với Windows, vì vậy tôi gắn thẻ câu hỏi của mình là "windows".
sleske

1
Chà, có vẻ như 7z lưu trữ các thư mục <SYMLINKD> và <JUNCTION> chứ không phải các tệp <SYMLINK>, vì vậy tôi đoán nếu bạn có thể lẻn tất cả các tệp của mình vào một thư mục và liên kết tượng trưng để nó hoạt động
hova

Câu trả lời:


13

Rõ ràng 7zip chỉ lưu trữ liên kết mà nó không phải là những gì tôi dự định. Có cách nào để nói với 7zip rằng tôi muốn nó lưu trữ những thứ mà nó liên kết quá, không phải là liên kết tự nó

Không, rõ ràng là không (không may). Thực sự có một báo cáo lỗi trên 7zip yêu cầu điều này: http://sourceforge.net/tracker/?func=detail&aid=2846755&group_id=14481&atid=114481 nhưng nó đã được mở vào tháng 8 năm 2009 và không được chạm vào kể từ: - /.

Không có bất kỳ hợp lý xung quanh nó, ngoài việc thêm các tập tin và thư mục trong câu hỏi? Bao gồm các nội dung thông qua liên kết tượng trưng có khoảng 10 000 tệp, tỷ lệ lớn trong số đó là thông qua liên kết tượng trưng nên việc thêm tất cả chúng sẽ mất hàng giờ ...

Chà, nếu bạn có đủ không gian (và thời gian), bạn có thể tạo bản sao của thư mục, thay thế các liên kết tượng trưng bằng các mục tiêu của chúng. Bạn có thể sử dụng Robocopy và công tắc của nó /sl:

/ sl Sao chép liên kết tượng trưng thay vì mục tiêu


Lưu ý: Chỉ cần để tránh nhầm lẫn, lưu ý rằng việc xây dựng Linux của p7zip (một cảng 7zip) cũng có một nhị phân 7zkhông hỗ trợ lưu trữ các tập tin một điểm liên kết tượng trưng đến (switch -l). Tuy nhiên, 7zip trên Windows không có công tắc này.


Bởi vì đây là câu trả lời được phê duyệt, muốn chỉ ra rằng 7zip thực sự thực hiện nó bằng -ltrình chuyển đổi. zip và gzip cũng vậy với các lệnh cụ thể của chúng.
m3nda

@ erm3nda bạn thấy công tắc này ở đâu? Xin vui lòng, cung cấp các tài liệu tham khảo.
đánh dấu

linux.die.net/man/1/7z Có một tùy chọn l, và cũng có một công tắc có cùng chữ cái. Tôi lưu ý rằng tùy chọn này không có trong phiên bản phần mềm Windows.
m3nda

@ erm3nda: Có, nhưng đó là p7zip, cổng 7zip. Cảm ơn đã chỉ ra điều đó; Tôi cập nhật câu trả lời của tôi.
sleske

Cảm ơn. Không thể tin rằng Windows đang thiếu tính năng này. Ngay cả khi các liên kết tượng trưng trên Windows khá khác nhau, đừng hiểu tại sao khó để làm cho nó hoạt động.
m3nda

-1

Nếu bạn đang sử dụng Vista trở lên, hãy xóa các liên kết tượng trưng và thay thế chúng bằng mklinks

mklink /D Directory FullPathToRealDirectory

Lưu ý rằng mklink khá mạnh mẽ và có thể bao gồm các liên kết đến chia sẻ mạng và những thứ tương tự.

Vì dường như có một số nhầm lẫn về điều này, cho phép tôi làm rõ. Tôi giả sử OP thực sự đang nói về các mối nối như được minh họa ở đây http://en.wikipedia.org/wiki/NTFS_jeft_point . Mklink không thực hiện các mối nối . Nó tạo ra các liên kết tượng trưng TRUE và tôi đã thử nó và 7zip tôn trọng chúng một cách hoàn hảo. Ngoài ra, bạn cần phải là quản trị viên để tạo các liên kết tượng trưng mklink.

 Directory of C:\temp\t

04/08/2010  04:50 PM    <DIR>          .
04/08/2010  04:50 PM    <DIR>          ..
04/08/2010  04:31 PM    <SYMLINKD>     GB [c:\users\testuser]    <-- created by mklink
04/08/2010  04:50 PM    <JUNCTION>     GB2 [\??\c:\users\testuser] <-- created by junction
04/08/2010  04:29 PM                 8 test.txt

7zip sẽ lưu trữ GB, nhưng nó sẽ KHÔNG lưu trữ GB2. EDIT: Trên thực tế thử nghiệm thêm cho thấy 7zip SILL lưu trữ cả hai thư mục bằng phiên bản 4.65. Vì vậy, tôi không có vấn đề gì là vấn đề.


1
Với tất cả các liên kết gốc được tạo ra với Microsoft API và mklik ở nơi đầu tiên, điều này giải quyết gì ngoài việc làm lại cùng một thứ?
Lancer lửa

2
-1 Làm thế nào để giải quyết vấn đề? Bạn chỉ cần mô tả làm thế nào để tạo liên kết tượng trưng.
sleske

@hova: Vâng, điều đó hoàn toàn đúng (mặc dù MS thường chỉ gọi các liên kết tượng trưng là "liên kết tượng trưng"; các mối nối không bao giờ được gọi là "liên kết tượng trưng"). Nhưng làm thế nào điều này liên quan đến câu hỏi?
sleske

7zip lưu trữ các thư mục SYMLINKD (mklink)!
hova

1
Tôi mới thực hiện một số thử nghiệm với 7zip v15,14 (64 bit) trên Windows 7 và có vẻ như 7zip hiện theo các liên kết tượng trưng thư mục nhưng chỉ lưu trữ một tệp trống cho các liên kết tệp - không hữu ích lắm.
Bigue Nique
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.