/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
tar -d
Fra : Kasper Dupont


Dato : 22-09-05 09:01

Jeg har brug for at sammenligne en tar fil med
det nuværende indhold af et filsystem. Jeg kiggede
lidt på man siden (GNU tar 1.13.25), og tar -d
lyder som det jeg har brug for.

Jeg lavede lige nogle små tests for at se om den
opdagede alle forskelle. Det gjorde den næsten.
Det eneste den ikke fortalte mig om var filer, der
findes på filsystemet men ikke i tar filen.

Hvordan får jeg at vide hvilke filer, der er blevet
oprettet siden tar filen blev lavet?

Og lige et tillægsspørgsmål. Hvordan sammelinger
jeg indholdet af to tar filer? (Uden at pakke dem
ud selvfølgelig).

--
Kasper Dupont
Note to self: Don't try to allocate
256000 pages with GFP_KERNEL on x86.

 
 
Thomas Rasmussen (22-09-2005)
Kommentar
Fra : Thomas Rasmussen


Dato : 22-09-05 09:05

Kasper Dupont <kasperd@daimi.au.dk> wrote in news:433264BF.37FC9779
@daimi.au.dk:

> Og lige et tillægsspørgsmål. Hvordan sammelinger
> jeg indholdet af to tar filer? (Uden at pakke dem
> ud selvfølgelig).

Vil du vide hvad forskellen er eller blot om de er ens? Hvis det er andet
tilfælde så brug diff på de to filer, så slipper du for at pakke dem ud.
Hvis du vil vide hvilke forskelle der er så kan jeg desværre ikke lige
hjælpe på stående fod... Uanset hvad skal filen jo pakkes ud for at du kan
se hvad der er i den, men jeg går ud fra at det bare er dig selv der vil
slippe for at pakke den ud.

Thomas


Kasper Dupont (22-09-2005)
Kommentar
Fra : Kasper Dupont


Dato : 22-09-05 09:19

Thomas Rasmussen wrote:
>
> Kasper Dupont <kasperd@daimi.au.dk> wrote in news:433264BF.37FC9779
> @daimi.au.dk:
>
> > Og lige et tillægsspørgsmål. Hvordan sammelinger
> > jeg indholdet af to tar filer? (Uden at pakke dem
> > ud selvfølgelig).
>
> Vil du vide hvad forskellen er eller blot om de er ens?

Jeg vil vide hvad forskellene er.

> Hvis det er andet
> tilfælde så brug diff på de to filer, så slipper du for at pakke dem ud.

Den vil så fortælle mig, at filerne er forskellige blot
fordi de enkelte filer ligger i forskellige rækkefølge
i de to tar filer.

> Hvis du vil vide hvilke forskelle der er så kan jeg desværre ikke lige
> hjælpe på stående fod... Uanset hvad skal filen jo pakkes ud for at du kan
> se hvad der er i den, men jeg går ud fra at det bare er dig selv der vil
> slippe for at pakke den ud.

Jeg vil undgå at skulle bruge den ekstra diskplads på
at pakke filerne ud. Desuden forventer jeg at det vil
gå slemt ud over performance hvis der først skal
oprettes en masse små filer på filsystemet for derefter
at sammenligne dem. Begge dele er væsentligt når man
arbejder med tar filer på mange GB. Endeligt er der
også den detalje, at udpakningen ikke kan bevare
ejerskab på filerne med mindre man kører som root.

--
Kasper Dupont
Note to self: Don't try to allocate
256000 pages with GFP_KERNEL on x86.

Søren A Christensen (22-09-2005)
Kommentar
Fra : Søren A Christensen


Dato : 22-09-05 16:05


Hvad med bare at liste indholdet af de to tar-filer og så diff'e det ?

tar tvf fil1.tar | sort > xx1
tar tvf fil2.tar | sort > xx2
diff xx1 xx2

Måske sdiff er bedre eller et par options kan hjælpe med at gøre diff
outputtet mere læseligt.

/Søren
>

Kasper Dupont (22-09-2005)
Kommentar
Fra : Kasper Dupont


Dato : 22-09-05 18:38

Søren A Christensen wrote:
>
> Hvad med bare at liste indholdet af de to tar-filer og så diff'e det ?
>
> tar tvf fil1.tar | sort > xx1
> tar tvf fil2.tar | sort > xx2
> diff xx1 xx2

Antallet af mellemrum i outputet varierer, jeg kan ikke helt
gennemskue hvorfor det varierer. Desuden vil det være rart
også at kunne sammenligne indholdet af filerne og ikke kun
metadata.

I øvrigt ville jeg nok ændre ovenstående kommando til:
diff <(tar -tvf fil1.tar|sort) <(tar -tvf fil2.tar|sort)

Eller måske noget i retning af:
t(){
   tar -tv |
   sed -e ':L s|\(kasperd \)\([ 0-9]\{0,6\}[0-9] \)|\1 \2|;tL' |
   sort
}
diff <(t<fil1.tar) <(t<fil2.tar)

Som gerne skulle sørge for at der er lige mange mellemrum
i begge output. Indrømmet sed kommandoen stinker.

--
Kasper Dupont
Note to self: Don't try to allocate
256000 pages with GFP_KERNEL on x86.

Kasper Dupont (22-09-2005)
Kommentar
Fra : Kasper Dupont


Dato : 22-09-05 09:24

Kasper Dupont wrote:
>
> Hvordan får jeg at vide hvilke filer, der er blevet
> oprettet siden tar filen blev lavet?

Jeg kan selvføgelig bruge både tar -d og
diff -u <(tar -tf fil.tar|sort|sed -e's|/$||') <(find dir|sort)

Men der bude da være en smartere måde.

--
Kasper Dupont
Note to self: Don't try to allocate
256000 pages with GFP_KERNEL on x86.

Thomas Rasmussen (22-09-2005)
Kommentar
Fra : Thomas Rasmussen


Dato : 22-09-05 09:27

Kasper Dupont <kasperd@daimi.au.dk> wrote in news:43326A12.36447010
@daimi.au.dk:

> Kasper Dupont wrote:
>>
>> Hvordan får jeg at vide hvilke filer, der er blevet
>> oprettet siden tar filen blev lavet?
>
> Jeg kan selvføgelig bruge både tar -d og
> diff -u <(tar -tf fil.tar|sort|sed -e's|/$||') <(find dir|sort)
>
> Men der bude da være en smartere måde.
>

googlesøgning gav http://tardiff.coolprojects.org/

Den ser ud til at kunne det du vil, har dog ikke prøvet den

Thomas

Kasper Dupont (22-09-2005)
Kommentar
Fra : Kasper Dupont


Dato : 22-09-05 12:47

Thomas Rasmussen wrote:
>
> Kasper Dupont <kasperd@daimi.au.dk> wrote in news:43326A12.36447010
> @daimi.au.dk:
>
> > Kasper Dupont wrote:
> >>
> >> Hvordan får jeg at vide hvilke filer, der er blevet
> >> oprettet siden tar filen blev lavet?
> >
> > Jeg kan selvføgelig bruge både tar -d og
> > diff -u <(tar -tf fil.tar|sort|sed -e's|/$||') <(find dir|sort)
> >
> > Men der bude da være en smartere måde.
> >
>
> googlesøgning gav http://tardiff.coolprojects.org/
>
> Den ser ud til at kunne det du vil, har dog ikke prøvet den

Bortset fra, at den starter med at pakke begge tar filer ud
til /tmp med deraf følgende ulemper. Ikke så fedt hvis man
vil sammenligne to 70GB tar filer og kun har 100GB fri i /tmp.

--
Kasper Dupont
Note to self: Don't try to allocate
256000 pages with GFP_KERNEL on x86.

Thorbjoern Ravn Ande~ (22-09-2005)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 22-09-05 12:59

Kasper Dupont <kasperd@daimi.au.dk> writes:

> Kasper Dupont wrote:
> >
> > Hvordan får jeg at vide hvilke filer, der er blevet
> > oprettet siden tar filen blev lavet?

Tag tidsstemplet på tar-filen, og bed find om at finde dem der er
nyere end det?

--
Thorbjørn Ravn Andersen

Kasper Dupont (22-09-2005)
Kommentar
Fra : Kasper Dupont


Dato : 22-09-05 15:40

Thorbjoern Ravn Andersen wrote:
>
> Kasper Dupont <kasperd@daimi.au.dk> writes:
>
> > Kasper Dupont wrote:
> > >
> > > Hvordan får jeg at vide hvilke filer, der er blevet
> > > oprettet siden tar filen blev lavet?
>
> Tag tidsstemplet på tar-filen, og bed find om at finde dem der er
> nyere end det?

Der kan jo godt tilføjes filer med et tidsstempel, der
ligger i fortiden. F.eks. fordi man udpakker et arkiv
med gamle filer eller måske bruger cp -a. Desuden kan
det jo være, der er filer som er blevet omdøbt eller
hardlinket. I det konkrete tilfælde er der tale om et
filsystem som har haft en integritetsfejl, nu er den
rettet, og jeg vil godt sammenligne en tar fil, der
blev lavet før fejlen blev rettet med det jeg ser på
filsystemet nu. Under de omstændigheder tør jeg ikke
stole 100% på tidsstempler.

--
Kasper Dupont
Note to self: Don't try to allocate
256000 pages with GFP_KERNEL on x86.

Jacob Sparre Anderse~ (22-09-2005)
Kommentar
Fra : Jacob Sparre Anderse~


Dato : 22-09-05 15:48

Kasper Dupont skrev:
> Thomas Rasmussen skrev:
>> > Kasper Dupont skrev:

>> >> Hvordan får jeg at vide hvilke filer, der er blevet oprettet
>> >> siden tar filen blev lavet?

find $katalog -cnewer $tarfil -type f

>> googlesøgning gav http://tardiff.coolprojects.org/
>>
>> Den ser ud til at kunne det du vil, har dog ikke prøvet den
>
> Bortset fra, at den starter med at pakke begge tar filer ud til /tmp
> med deraf følgende ulemper. Ikke så fedt hvis man vil sammenligne to
> 70GB tar filer og kun har 100GB fri i /tmp.

Hvis du ser lidt på hvordan »Tape ARchive«-formatet er konstrueret,
vil du nok bemærke at det vil være svært at undgå at pakke begge filer
ud, hvis du vil sammenligne to »tar«-filer.

Problemet med »tar«-formatet er at man skal søge sekventielt igennem
et arkiv for at finde en bestemt fil. Man kan muligvis gå uden om det
problem, ved først at danne en tabel hvor man med et filnavn som
indeks, kan slå op hvor man finder den tilsvarende fil i den ene
»tar«-fil. Så kan man bare gennemløbe den anden »tar«-fil og springe
rundt i den første efter behov, når man skal sammenligne. Det vil
kræve noget mindre plads, men jeg tror også det vil være lidt
langsommere.

Hvis man bare vil sammenligne en »tar«-fil med et eksisterende
katalog, er der selvfølgelig ikke den slags problemer, da filnavnene i
det eksisterende katalog effektivt fungerer som den tabel man ellers
ville danne for at kunne springe rundt i den første »tar«-fil.

Under alle omstændigheder ser det ud til at der ligger en rar lille
programmeringsopgave og venter.

Jacob
--
»Standardafvigelsen af Excel er 6 Mb« -- Morten Sparre Andersen

Kim Hansen (22-09-2005)
Kommentar
Fra : Kim Hansen


Dato : 22-09-05 15:15

Kasper Dupont <kasperd@daimi.au.dk> writes:

> Jeg har brug for at sammenligne en tar fil med
> det nuværende indhold af et filsystem. Jeg kiggede
> lidt på man siden (GNU tar 1.13.25), og tar -d
> lyder som det jeg har brug for.
>
> Jeg lavede lige nogle små tests for at se om den
> opdagede alle forskelle. Det gjorde den næsten.
> Det eneste den ikke fortalte mig om var filer, der
> findes på filsystemet men ikke i tar filen.
>
> Hvordan får jeg at vide hvilke filer, der er blevet
> oprettet siden tar filen blev lavet?
>
> Og lige et tillægsspørgsmål. Hvordan sammelinger
> jeg indholdet af to tar filer? (Uden at pakke dem
> ud selvfølgelig).

Mount tar-filen/filerne med fuse <fuse.sf.net> eller noget tilsvarende
og brug almindelig diff til sammenligningen. Det kraever maaske at
dine tar-filer ikke er komprimeret.

--
Kim Hansen

Kasper Dupont (22-09-2005)
Kommentar
Fra : Kasper Dupont


Dato : 22-09-05 15:47

Kim Hansen wrote:
>
> Mount tar-filen/filerne med fuse <fuse.sf.net> eller noget tilsvarende
> og brug almindelig diff til sammenligningen.

Jeg overvejede at prøve med tarfs. Men sidst jeg prøvede tarfs
kunne jeg konstatere, at det ikke var helt færdigt og gav op
på de fleste af mine tar filer. Desuden tog det ret lang tid
at mounte et filsystem med tarfs (men det er nu formatets skyld).

Jeg ved ikke om fuse håndtering af tar filer er mere stabil, men
jeg tvivler på at fuse kan være hurtigere, for der ser ikke ud
til at være nogen oplagte muligheder for optimeringer i tarfs
koden. En dag jeg har meget tid til overs vil jeg prøve at
tilføje den manglende kode til tarfs.

> Det kraever maaske at dine tar-filer ikke er komprimeret.

Ikke noget problem, jeg anvender min egen komprimering, som
tillader at jeg kan læse filerne helt transparent.

--
Kasper Dupont
Note to self: Don't try to allocate
256000 pages with GFP_KERNEL on x86.

Jacob Tranholm (22-09-2005)
Kommentar
Fra : Jacob Tranholm


Dato : 22-09-05 19:38

Kasper Dupont wrote:
> Kim Hansen wrote:
>
>>Mount tar-filen/filerne med fuse <fuse.sf.net> eller noget tilsvarende
>>og brug almindelig diff til sammenligningen.
>
>
> Jeg overvejede at prøve med tarfs. Men sidst jeg prøvede tarfs
> kunne jeg konstatere, at det ikke var helt færdigt og gav op
> på de fleste af mine tar filer. Desuden tog det ret lang tid
> at mounte et filsystem med tarfs (men det er nu formatets skyld).
>
> Jeg ved ikke om fuse håndtering af tar filer er mere stabil, men
> jeg tvivler på at fuse kan være hurtigere, for der ser ikke ud
> til at være nogen oplagte muligheder for optimeringer i tarfs
> koden. En dag jeg har meget tid til overs vil jeg prøve at
> tilføje den manglende kode til tarfs.
>
>
>>Det kraever maaske at dine tar-filer ikke er komprimeret.
>
>
> Ikke noget problem, jeg anvender min egen komprimering, som
> tillader at jeg kan læse filerne helt transparent.
>

Dette burde kunne laves ved anvendelse af AVFS (A Virtual File System):
http://sourceforge.net/projects/avf og diff...

--
Mvh. Jacob Tranholm
http://jtranholm.dk/

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste