Link simbolici e 7zip


18

Sto cercando di comprimere una cartella in un archivio .7z. Questa cartella contiene collegamenti simbolici ad altri elementi esterni alla cartella (sia directory che file).

Apparentemente 7zip archivia semplicemente il link stesso che non è quello che intendevo. C'è un modo per dire a 7zip che voglio che archivi le cose a cui si collega, non il collegamento stesso? (Cioè se c'è un nome di collegamento simbolico a foocui punta C:\stuff\foo, voglio che includa la C:\stuff\foodirectory nell'archivio al posto di pippo, non un collegamento simbolico a 0 byte.))

C'è qualche soluzione ragionevole oltre all'aggiunta di file e cartelle in questione? Ci sono circa 10.000 file a cui si fa riferimento tramite collegamenti simbolici, quindi aggiungerli tutti singolarmente richiederebbe ore ... Forse c'è un programma che crea una cartella di gestione temporanea con i file reali al suo interno e quindi lo passa a 7zip. O solo un archiviatore che gestisce meglio i collegamenti simbolici.

Sto eseguendo Windows Vista. Tutti i collegamenti sono collegamenti simbolici (ad es. Creati con mklink link targete mklink /D link target).

MODIFICARE:

dir output del comando per una directory di test più piccola:

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

La creazione di un archivio 7z di quello con 7zip comporta real file.txtl'inclusione, ma test file.txtviene aggiunto come file a 0 byte, sebbene il file collegato esista e sia 50 KB.


Quale sistema operativo stai usando?
Charles Gargent,

2
Il tag "windows" suggerisce che sto usando, beh windows ...
Fire Lancer

1
Ok, quale versione di Windows stai usando?
Charles Gargent,

@Fire Lancer: in generale, è una buona idea ripetere qualsiasi informazione dai tag nel testo. Più facile da leggere, e non tutti guardano i tag (poiché sono in fondo). Inoltre, i tag possono essere inclini a incomprensioni. Ad esempio, potrei essere su Linux ma vorrei interagire con Windows, quindi taggo la mia domanda "windows".
sleske,

1
Bene, sembrerebbe che 7z archivia le directory <SYMLINKD> e <JUNCTION> ma non i file <SYMLINK>, quindi immagino che se riesci a intrufolare tutti i tuoi file in una directory e il link simbolico che funzionerebbe
hova

Risposte:


13

A quanto pare 7zip archivia solo il link stesso, che non è quello che intendevo. C'è un modo per dire a 7zip che voglio che archivi anche le cose che collega, non il collegamento stesso

No, apparentemente no (purtroppo). In realtà esiste una segnalazione di bug su 7zip che richiede questo: http://sourceforge.net/tracker/?func=detail&aid=2846755&group_id=14481&atid=114481 ma è stato aperto nell'agosto 2009 e non toccato dal: - /.

In mancanza di ciò c'è un ragionevole attorno ad esso, oltre ad aggiungere i file e le cartelle in questione? Includendo le cose attraverso il collegamento simbolico ci sono circa 10.000 file, la maggior parte dei quali sono tramite collegamenti simbolici, quindi aggiungerli tutti individualmente richiederebbe ore ...

Bene, se hai abbastanza spazio (e tempo), puoi fare una copia della cartella, sostituendo i collegamenti simbolici con i loro obiettivi. Puoi ad esempio usare Robocopy e il suo interruttore /sl:

/ sl Copia il collegamento simbolico anziché la destinazione


Nota: Solo per evitare confusione, si noti che la build per Linux di p7zip (un porto di 7zip) ha anche un binario 7zche fa il supporto archiviazione del file di un simbolico punta link (interruttore -l). Tuttavia, 7zip su Windows non ha questa opzione.


Poiché questa è la risposta approvata, voglio indicare che 7zip effettivo lo fa da -lswitcher. zip e gzip lo fanno anche con i loro comandi specifici.
m3nda,

@ erm3nda dove vedi questo interruttore? Si prega di fornire il riferimento.
segna il

linux.die.net/man/1/7z C'è un'opzione l, e c'è anche un interruttore con la stessa lettera. Ho notato che questa opzione non è presente nella versione Windows del software.
m3nda,

@ erm3nda: Sì, ma è p7zip, una porta di 7zip. Grazie per segnalarlo; Ho aggiornato la mia risposta.
sleske,

Grazie anche a te. Non riesco a credere che questa funzionalità non sia presente in Windows. Anche se i collegamenti simbolici su Windows sono abbastanza diversi, non capire perché è difficile farlo funzionare.
m3nda,

-1

Se si utilizza Vista e versioni successive, rimuovere i collegamenti simbolici e sostituirli con mklink

mklink /D Directory FullPathToRealDirectory

Nota che mklink è piuttosto potente e può includere collegamenti a condivisioni di rete e simili.

Dal momento che sembra esserci un po 'di confusione su questo, permettimi di chiarire. Suppongo che l'OP stia effettivamente parlando di giunzioni, come illustrato qui http://en.wikipedia.org/wiki/NTFS_junction_point . Mklink non crea giunzioni . Crea Veri collegamenti simbolici e l'ho provato io stesso e 7zip li rispetta perfettamente. Inoltre, devi essere un amministratore per creare collegamenti simbolici 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 archivia GB, ma NON archivia GB2. EDIT: ulteriori test mostrano che 7zip archivia entrambe le directory usando la versione 4.65. Quindi non ho idea di quale sia il problema.


1
Dato che tutti i collegamenti simbolici di orig sono stati realizzati con le API di Microsoft e mklik in primo luogo, cosa risolve questo a parte il remake della stessa cosa?
Fire Lancer

2
-1 In che modo risolve il problema? Descrivi semplicemente come creare collegamenti simbolici.
sleske,

@hova: Sì, è tutto vero (anche se la SM di solito chiama solo i collegamenti simbolici "collegamenti simbolici"; le giunzioni non vengono mai chiamate "collegamenti simbolici"). Ma come si collega alla domanda?
sleske,

Archivi 7zip Directory SYMLINKD (mklink)!
hova,

1
Ho appena eseguito alcuni test con 7zip v15.14 (64 bit) su Windows 7 e sembra che 7zip ora segua i collegamenti simbolici delle directory ma memorizzi solo un file vuoto per i collegamenti simbolici dei file, il che non è molto utile.
Bigue Nique,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.