Символічні посилання та 7zip


18

Я намагаюся стиснути папку в архіві .7z. Ця папка містить символічні посилання на деякі інші речі поза папкою (як на каталоги, так і на файли).

Мабуть, 7zip просто архівує посилання, яке не є тим, що я задумав. Чи є спосіб сказати 7zip, що я хочу, щоб він архівував речі, на які він посилається, а не саме посилання? (Тобто, якщо є ім'я символьного посилання, fooяке вказує наC:\stuff\foo , я хочу, щоб воно містило C:\stuff\fooкаталог в архіві замість foo, а не 0-байтове посилання.))

Чи є якісь обґрунтовані рішення, крім додавання файлів і папок, про які йдеться? Існує близько 10 000 файлів, на які посилається посилання на символічні посилання, тож додавання їх усіх окремо потребує годин… Можливо, є програма, яка створює інсценізаційну папку з реальними файлами в ній, а потім передає їх на 7zip. Або просто архіватор, який краще обробляє символічні посилання.

Я запускаю Windows Vista. Усі посилання є символічними посиланнями (наприклад, створені за допомогоюmklink link target та mklink /D link target).

Редагувати:

dir виведення команди для меншої тестової директорії:

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

Створення 7z архіву цього архіву з результатом 7zip real file.txtвключається, але test file.txtдодається як 0-байтний файл, хоча файл, який пов'язаний з ним, існує і становить 50 КБ.


Яку ОС ви використовуєте?
Чарльз Гаргент

2
Хіба тег "windows" не підказує, що я використовую, ну windows ...
Fire Lancer

1
Гаразд, яку версію Windows ви використовуєте?
Чарльз Гаргент

@Fire Lancer: Як правило, корисно повторити будь-яку інформацію з тегів у тексті. Легше читати, і не всі дивляться на теги він (як вони знаходяться внизу). Плюс теги можуть бути схильні до непорозумінь. Наприклад, я можу бути в Linux, але хочу взаємодіяти з Windows, тому я мічу своє питання "windows".
sleske

1
Що ж, здається, що 7z архіви каталогів <SYMLINKD> та <JUNCTION>, але не <SYMLINK> файли, тож я здогадуюсь, чи зможете ви прокрасти всі ваші файли в каталог і надати посилання, що це буде працювати
hova

Відповіді:


13

Мабуть, 7zip просто архівує посилання, яке я є самим, але це не те, що я задумав. Чи є спосіб сказати 7zip, що я хочу, щоб він також архівував речі, на які він посилається, а не на посилання

Ні, мабуть, ні (на жаль). Насправді звіт про помилку на 7zip вимагає цього: http://sourceforge.net/tracker/?func=detail&aid=2846755&group_id=14481&atid=114481, але він був відкритий у серпні 2009 року та не торкнувся з: - /.

Якщо цього немає, є щось розумне, крім додавання файлів і папок, про які йдеться? У тому числі через символьне посилання є 10 000 файлів, велика частка яких здійснюється через посилання, тому додавання їх поодинці зайняло б години ...

Ну, якщо у вас є достатньо місця (та часу), ви можете зробити копію папки, замінивши символьні посилання їхніми цілями. Наприклад, ви можете використовувати Robocopy та його перемикач /sl:

/ sl Копіює символічне посилання замість цілі


Примітка: Просто , щоб уникнути плутанини, до відома , що Linux збірка p7zip (порт 7zip) також має двійковий , 7zякий робить підтримку архівації файлу символічні точки посилання (перемикач -l). Однак у 7zip для Windows немає цього перемикача.


Оскільки це схвалена відповідь, хочу вказати, що фактичний 7zip робить це -lкомутатором. zip і gzip також робить їх за допомогою конкретних команд.
м3нда

@ erm3nda де ви бачите цей перемикач? Будь ласка, надайте довідку.
відмітка

linux.die.net/man/1/7z Існує варіант l, а також є перемикач з тією ж буквою. Зауважу, що ця версія відсутня у версії програмного забезпечення для Windows.
м3нда

@ erm3nda: Так, але це p7zip, порт 7zip. Дякую, що вказали на це; Я оновив свою відповідь.
sleske

Дякую і вам. Не можу повірити, що в Windows відсутня ця функція. Навіть якщо посилання на Windows є досить різними, не розумійте, чому важко змусити його працювати.
м3нда

-1

Якщо ви використовуєте Vista і вище, видаліть символьні посилання та замініть їх на mklinks

mklink /D Directory FullPathToRealDirectory

Зауважте, що mklink є досить потужним і може включати посилання на мережеві спільні ресурси тощо.

Оскільки, мабуть, існує певна плутанина в цьому, дозвольте мені уточнити. Я припускаю, що ОП насправді говорить про переходи, як проілюстровано тут http://en.wikipedia.org/wiki/NTFS_junction_point . Мклінк не робить з’єднань . Це робить ПРАВИЛЬНІ символічні посилання, і я спробував це сам, і 7zip їх поважає ідеально. Крім того, вам потрібно бути адміністратором, щоб створити символьні посилання 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 архівує GB, але він НЕ архівує GB2. EDIT: Насправді подальше тестування показує, що 7zip ВІЛЬКО буде архівувати обидва каталоги з використанням версії 4.65. Тож у мене немає поняття, в чому проблема.


1
Зважаючи на те, що всі посилання на orig були зроблені в першу чергу з Microsoft API та mklik, що це вирішує, крім того, як переробити те саме?
Пожежний улан

2
-1 Як це вирішує проблему? Ви просто опишете, як створити символічні посилання.
sleske

@hova: Так, це все правда (хоча MS зазвичай символічні посилання називають "символічними посиланнями"; з'єднання ніколи не називаються "символічними посиланнями"). Але як це стосується питання?
sleske

7zip архіви SYMLINKD (mklink) каталоги!
хова

1
Я щойно робив тестування на 7zip v15.14 (64 біт) на Windows 7, і, схоже, 7zip тепер слідує за символьними посиланнями, але зберігає лише порожній файл для посилань на файли - що не дуже корисно.
Bigue Nique
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.