Tautan simbolik dan 7zip

18

Saya mencoba mengompres folder menjadi arsip .7z. Folder ini berisi tautan simbolis ke beberapa hal lain di luar folder (baik direktori maupun file).

Ternyata 7zip hanya mengarsipkan tautannya sendiri yang bukan itu yang saya maksudkan. Apakah ada cara untuk memberitahu 7zip bahwa saya ingin mengarsipkan hal-hal yang tertaut, bukan tautan itu sendiri? (Yaitu jika ada nama symlink fooyang menunjuk C:\stuff\foo, saya ingin memasukkan C:\stuff\foodirektori dalam arsip sebagai pengganti foo, bukan symlink 0-byte.))

Apakah ada solusi yang masuk akal selain menambahkan file dan folder yang dimaksud? Ada sekitar 10.000 file yang direferensikan melalui symlink sehingga menambahkan semuanya secara individual akan memakan waktu berjam-jam ... Mungkin ada program yang membuat folder pementasan dengan file asli di dalamnya dan kemudian meneruskannya ke 7zip. Atau hanya pengarsip yang menangani symlink dengan lebih baik.

Saya menjalankan Windows Vista. Semua tautan adalah tautan simbolik (mis. Dibuat dengan mklink link targetdan mklink /D link target).

EDIT:

dir perintah output untuk direktori tes yang lebih kecil:

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

Membuat arsip 7z dengan hasil 7zip real file.txtdimasukkan, tetapi test file.txtditambahkan sebagai file 0 byte, meskipun file yang ditautkan ke dalamnya ada dan berukuran 50KB.

Lancer Api
sumber
OS apa yang Anda gunakan?
Charles Gargent
2
Bukankah tag "windows" menyarankan agar saya menggunakan, well windows ...
Fire Lancer
1
Oke, Windows versi apa yang Anda gunakan?
Charles Gargent
@Fire Lancer: Secara umum, ide yang bagus untuk mengulang informasi dari tag dalam teks. Lebih mudah dibaca, dan tidak semua orang melihat dia memberi tag (karena mereka ada di bagian bawah). Selain itu, tag dapat rentan terhadap kesalahpahaman. Misalnya, saya mungkin berada di Linux tetapi ingin beroperasi dengan Windows, jadi saya memberi tag pada pertanyaan saya "windows".
sleske
1
Yah, akan muncul bahwa 7z arsipkan direktori <SYMLINKD> dan <JUNCTION> tetapi bukan file <SYMLINK>, jadi saya kira jika Anda dapat menyelinap semua file Anda ke dalam direktori dan menyinkronkan bahwa itu akan berfungsi
hova

Jawaban:

13

Ternyata 7zip hanya mengarsipkan tautannya sendiri yang bukan itu yang saya maksudkan. Apakah ada cara untuk memberitahu 7zip bahwa saya ingin mengarsipkan hal-hal yang ditautkan juga, bukan tautannya sendiri

Tidak, ternyata tidak (sayangnya). Sebenarnya ada laporan bug pada 7zip yang meminta ini: http://sourceforge.net/tracker/?func=detail&aid=2846755&group_id=14481&atid=114481 tetapi dibuka pada Agustus 2009 dan tidak tersentuh sejak: - /.

Gagal apakah ada yang masuk akal di sekitarnya, selain menambahkan file dan folder yang dimaksud? Termasuk barang-barang melalui symlink ada seperti 10.000 file, sebagian besar di antaranya adalah melalui symlink sehingga menambahkan semuanya secara individual akan memakan waktu berjam-jam ...

Nah, jika Anda memiliki cukup ruang (dan waktu), Anda dapat membuat salinan folder, mengganti symlink dengan target mereka. Anda misalnya dapat menggunakan Robocopy dan sakelarnya/sl :

/ sl Menyalin tautan simbolik alih-alih target


Catatan: Hanya untuk menghindari kebingungan, catatan bahwa membangun Linux dari p7zip (pelabuhan 7zip) juga memiliki biner 7zyang tidak mendukung pengarsipan file symbolic link poin ke (switch -l). Namun, 7zip di Windows tidak memiliki sakelar ini.

sleske
sumber
Karena ini adalah jawaban yang disetujui, ingin menunjukkan bahwa 7zip yang sebenarnya melakukannya dengan -lswitcher. zip dan gzip juga melakukan perintah khusus mereka.
m3nda
@ erm3nda di mana Anda melihat sakelar ini? Tolong, berikan referensi.
tandai
linux.die.net/man/1/7z Ada opsi l, dan ada juga saklar dengan huruf yang sama. Saya perhatikan bahwa opsi ini tidak ada pada versi perangkat lunak Windows.
m3nda
@ erm3nda: Ya, tapi itu p7zip, port dari 7zip. Terima kasih telah menunjukkannya; Saya memperbarui jawaban saya.
sleske
Terima kasih kembali. Tidak dapat percaya bahwa Windows kehilangan fitur ini. Bahkan jika symlink pada Windows cukup berbeda, jangan mencari tahu mengapa sulit untuk membuatnya bekerja.
m3nda
-1

Jika Anda menggunakan Vista dan di atasnya, hapus symlink dan ganti dengan mklinks

mklink /D Directory FullPathToRealDirectory

Perhatikan bahwa mklink cukup kuat dan dapat menyertakan tautan ke jaringan dan sejenisnya.

Karena tampaknya ada beberapa kebingungan dalam hal ini, izinkan saya untuk mengklarifikasi. Saya berasumsi OP sebenarnya berbicara tentang persimpangan seperti yang diilustrasikan di sini http://en.wikipedia.org/wiki/NTFS_junction_point . Mklink tidak membuat persimpangan . Itu membuat tautan simbol yang BENAR dan saya mencobanya sendiri dan 7zip menghormatinya dengan sempurna. Anda juga harus menjadi administrator untuk membuat tautan simbolik 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 akan mengarsipkan GB, tetapi TIDAK akan mengarsipkan GB2. EDIT: Sebenarnya pengujian lebih lanjut menunjukkan bahwa 7zip AKAN mengarsipkan kedua direktori menggunakan versi 4.65. Jadi saya tidak tahu apa masalahnya.

hova
sumber
1
Mengingat semua symlink asli dibuat dengan Microsoft API dan mklik di tempat pertama, apa yang dipecahkan selain membuat ulang hal yang sama?
Fire Lancer
2
-1 Bagaimana cara mengatasi masalah? Anda cukup menjelaskan cara membuat tautan simbolis.
sleske
@ova: Ya, itu semua benar (meskipun MS biasanya hanya menyebut tautan simbolik "tautan simbolik"; persimpangan tidak pernah disebut sebagai "tautan simbolik"). Tetapi bagaimana ini berhubungan dengan pertanyaan?
sleske
7zip arsipkan direktori SYMLINKD (mklink)!
hova
1
Saya baru saja melakukan pengujian dengan 7zip v15.14 (64 bit) pada Windows 7, dan tampaknya 7zip sekarang mengikuti symlink direktori tetapi hanya menyimpan file kosong untuk symlink file - yang tidak terlalu berguna.
Bigue Nique