file & tar combineren

Pagina: 1
Acties:

  • marco_balk
  • Registratie: April 2001
  • Laatst online: 20-06-2025
Ik wil dmv file een groep files tarren tot een archief.
Dat dacht ik heel simpel te doen door dit in te voeren:
code:
1
find ./ -ctime +42 | tar -cf done.tar


Maar dat werkt niet:
code:
1
tar: Cowardly refusing to create an empty archive


Wat doe ik fout?? :?
De MAN van file & tar maken mij ook niets wijzer.

Verwijderd

je moet niet pipen, je moet dit argument gebruiken bij find:

code:
1
-exec tar -cf {} \;


Extra voorbeeldje:

code:
1
find /var/ftp/mp3 -name "*.mp3" -type f -exec chmod 744 {} \;

[ Voor 34% gewijzigd door Verwijderd op 02-02-2007 14:55 . Reden: voorbeeld ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 02-02 17:58

Robtimus

me Robtimus no like you

Verwijderd schreef op vrijdag 02 februari 2007 @ 14:54:
je moet niet pipen, je moet dit argument gebruiken bij find:

code:
1
-exec tar -cf {} \;


Extra voorbeeldje:

code:
1
find /var/ftp/mp3 -name "*.mp3" -type f -exec chmod 744 {} \;
Ga je dan niet elke file afzonderlijk tarren?

Mss werkt dit (niet getest):
code:
1
tar -cf done.tar `find ./ -ctime +42`


Edit: net getest, en volgens mij gaat dit werken.

[ Voor 5% gewijzigd door Robtimus op 02-02-2007 15:00 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 08:27
Je kunt het ook de andere kant op doen:

code:
1
tar -cf done.tar `find ./ -ctime +42`
Dus de uitvoer van find wordt gebruikt als invoer voor tar. Je krijgt wel een melding:
code:
1
tar: ./done.tar: file is the archive; not dumped
Oftewel, done.tar is het archief, dus die wordt niet meegenomen in done.tar. Maargoed ook, anders krijg je recursie :P.
IceManX schreef op vrijdag 02 februari 2007 @ 14:59:
[...]
Ga je dan niet elke file afzonderlijk tarren?

Mss werkt dit (niet getest):
code:
1
tar -cf done.tar `find ./ -ctime +42`
Dat werkt, en wel getest :P.

[ Voor 27% gewijzigd door Jaap-Jan op 02-02-2007 15:00 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • marco_balk
  • Registratie: April 2001
  • Laatst online: 20-06-2025
IceManX schreef op vrijdag 02 februari 2007 @ 14:59:
[...]
Ga je dan niet elke file afzonderlijk tarren?
Idd, dat doet ie
IceManX schreef op vrijdag 02 februari 2007 @ 14:59:
Mss werkt dit (niet getest):
code:
1
tar -cf done.tar `find ./ -ctime +42`
Resultaat:
code:
1
/bin/tar: Argument list too long


Maar hiermee zou ik eruit moeten komen. Bedankt!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Je kan tar -A gebruiken, dat files aan een bestaand archief toevoegt. Als het archief nog niet bestaat, wordt het gecreeerd.

Wie trösten wir uns, die Mörder aller Mörder?


  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09-2025
Of zoiets....

code:
1
2
find ./ -ctime +42 > lijstje.txt
tar -T lijstje.txt -cf done.tar


Met de optie -T
-T, --files-from F
get names to extract or archive from file F

  • marco_balk
  • Registratie: April 2001
  • Laatst online: 20-06-2025
eth0 schreef op vrijdag 02 februari 2007 @ 15:31:
Of zoiets....

code:
1
2
find ./ -ctime +42 > lijstje.txt
tar -T lijstje.txt -cf done.tar


Met de optie -T


[...]
Ja, geweldig!!! O+
Al die andere opties werkten niet. Er blijken ook 27000 files in de folder te zitten....

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 02-02 17:58

Robtimus

me Robtimus no like you

Verwijderd schreef op vrijdag 02 februari 2007 @ 14:54:
je moet niet pipen, je moet dit argument gebruiken bij find:

code:
1
-exec tar -cf {} \;


Extra voorbeeldje:

code:
1
find /var/ftp/mp3 -name "*.mp3" -type f -exec chmod 744 {} \;
Confusion schreef op vrijdag 02 februari 2007 @ 15:16:
Je kan tar -A gebruiken, dat files aan een bestaand archief toevoegt. Als het archief nog niet bestaat, wordt het gecreeerd.
Kun je niet beter deze combinatie gebruiken? Dat bespaart je weer een tijdelijke text file.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • jurp5
  • Registratie: Februari 2003
  • Laatst online: 30-01 20:52
find ./ -ctime +42 | tar -cf done.tar -
- staat voor STDIN, oftewel standard input(met pipe)

  • _JGC_
  • Registratie: Juli 2000
  • Nu online
Ehm, testen jullie wel wat jullie posten?

code:
1
2
3
[jan@server ~]$ find ssl | tar cf test.tar -
tar: -: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors


Verder maakt de -exec steeds per gevonden bestand een tar archief aan, niet de bedoeling.
Daarnaast nog de tar cf test.tar `find .` methode: die gaat ook niet werken want dat moet allemaal op je commandline passen, dat gaat niet lukken.

Als je met tar aan de slag gaat, zou ik de tip van de tijdelijke textfile proberen.
Wil je toch per se met pipes werken:
code:
1
find /var/backups/ -depth -print | afio -b 10k -oZ -G 9 -c 5000 -M 64m /dev/st0


Waarbij /var/backups je te backuppen locatie is en /dev/st0 je tapestreamer, of in jouw geval, je gecomprimeerde CPIO archief is.

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

_JGC_ schreef op vrijdag 02 februari 2007 @ 22:53:
Verder maakt de -exec steeds per gevonden bestand een tar archief aan,
De tar -c maakt per gevonden bestand een archief aan. tar -A in de -exec werkt prima.

Wie trösten wir uns, die Mörder aller Mörder?

Pagina: 1