Lustigt kommando från wikin

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
johanre
Serveradmin
Inlägg: 3888
Blev medlem: 22 okt 2006, 09:13
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Malmö

Re: Lustigt kommando från wikin

Inlägg av johanre »

Kan inte annat än instämma! Gediget arbete, Konservburk! 8)
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Lustigt kommando från wikin

Inlägg av m!rage »

+1
Användarvisningsbild
alatariel
Inlägg: 750
Blev medlem: 20 aug 2007, 13:33
OS: Kubuntu
Utgåva: 18.04 Bionic Beaver LTS
Ort: Upplands Väsby

Re: Lustigt kommando från wikin

Inlägg av alatariel »

Själv använder jag alltid kommandot pax i dessa situationer ...
http://manpages.ubuntu.com/manpages/int ... pax.1.html

dvs typ

Kod: Markera allt

sudo pax -r -w -p e olddir newdir
(har funnit att det är bäst att ställa sig i olddir och kopiera till newdir, dvs att de sista två argumenten blir: . newdir)
~~~ Kubuntu18.04 ~~~
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Lustigt kommando från wikin

Inlägg av Konservburk »

Då har vi ytterligare ett förslag. Eftersom jag aldrig testade cpio- och tar-förlagen med och utan sudo så kan jag lika gärna göra det nu så blir det något att jämföra med. Jag har plockat bort -depth och -d från cpio-förlaget med hänvisning till vad jag skrev i mitt förra inlägg. Efter en snabb koll i manualbladet har jag även förbättrat tar-förlaget något genom att lägga till S vid packningen och p vid uppackningen för att bevara sparse files och permission bits, samt tagit bort "f -" eftersom - faktiskt är default-värdet om man inte anger f alls. Det är som sagt möjligt att det finns ytterligera förbättringar att göra. Kom gärna med förlag.

Kod: Markera allt

cd /old/home/.
sudo find . -print0 | sudo cpio --null --sparse -pv /new/.

Kod: Markera allt

cd /old/home/.
sudo tar cS . | (cd /new/. && sudo tar xp)

Kod: Markera allt

cd /old/home/.
sudo pax -rwpe . /new/.
cpio tar pax
protected files sudo sudo sudo
dense files - ok ok
sparse files ok ok ok
directories ok ok ok
block devices sudo sudo sudo
character devices sudo sudo sudo
named pipes ok ok ok
sockets ok - -
symbolic links ok ok ok
hard links ok ok ok
file owner sudo sudo sudo
member group sudo sudo ok
other group sudo sudo sudo
permission bits ok ok ok
access timestamp - - ok
modify timestamp - ok ok
change timestamp - - -
security context - - -
trusted attributes - - -
user attributes - - -
access control lists - - -


Vi ser nu att både tar och pax precis som cp klarar av att bevara både dense och sparse files samtidigt. Men varken tar eller pax bevarar sockets. Och lustigt nog kräver både cpio och tar att man använder sudo för att bevara member group.

Inget av dessa arkiveringsverktyg bevarar något av de utökade attributen, iaf inte de versioner som finns i Lucid Beta2 och med de flaggor som vi har använt. Det kan ju faktiskt vara användbart att ha möjligheten att spara undan nerpackade arkiv med precis allting bevarat. Jag hoppas att vi kan få in förlag som klarar av detta.
Rune.K
Inlägg: 6437
Blev medlem: 09 jul 2008, 17:19
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Lustigt kommando från wikin

Inlägg av Rune.K »

dmz skrev:Konservburks inlägg vinner nog priset bästa inlägg någonsin på detta forumet, snyggt!
Instämmer till hundra procent!
Den här tråden borde klistras på något sätt, eller hur?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Lustigt kommando från wikin

Inlägg av Konservburk »

Jag fick ett tips om star tidigare idag. Det har funnits sedan 1982, så det är inte direkt något nytt och otestat program. Det verkar vara väldigt kompetent och kan både kopiera direkt och skapa arkiv som man kan flytta och packa upp någon annan stans eller bara vid en annan tidpunkt. Jag har gjort samma grundliga test som för cp och rsync; och resultatet ser mycket lovande ut:

star -copy -d -S -copylinks -o -no-p -m
protected files sudo sudo sudo sudo sudo sudo
dense files ok ok ok ok ok ok
sparse files - - - - - -
directories - ok ok ok ok ok
block devices sudo - sudo sudo sudo sudo
character devices sudo - sudo sudo sudo sudo
named pipes ok - ok ok ok ok
sockets ok - ok ok ok ok
symbolic links ok ok - ok ok ok
hard links ok ok - ok ok ok
file owner sudo sudo sudo - sudo sudo
member group sudo sudo sudo - sudo sudo
other group sudo sudo sudo - sudo sudo
permission bits sudo sudo sudo sudo - sudo
access timestamp ok ok ok ok ok -
modify timestamp ok ok ok ok ok -
change timestamp - - - - - -
security context - - - - - -
trusted attributes - - - - - -
user attributes - - - - - -
access control lists - - - - - -


star -copy -force-hole -sparse -p -ctime -xattr -acl
protected files sudo sudo sudo sudo sudo sudo
dense files - ok ok ok ok ok
sparse files ok ok - - - -
directories ok ok ok ok ok ok
block devices sudo sudo sudo sudo sudo sudo
character devices sudo sudo sudo sudo sudo sudo
named pipes ok ok ok ok ok ok
sockets ok ok ok ok ok ok
symbolic links ok ok ok ok ok ok
hard links ok ok ok ok ok ok
file owner sudo sudo sudo sudo sudo sudo
member group sudo sudo sudo sudo sudo sudo
other group sudo sudo sudo sudo sudo sudo
permission bits sudo sudo ok sudo sudo ok
access timestamp ok ok ok ok ok ok
modify timestamp ok ok ok ok ok ok
change timestamp - - - sudo - -
security context - - - - sudo -
trusted attributes - - - - sudo -
user attributes - - - - ok -
access control lists - - - - - ok


För att bevara så mycket som möjligt blir kommandot:

Kod: Markera allt

cd /old/home/.
sudo star -copy -sparse -acl -xattr -ctime . /new/.
Helt i nivå med cp och rsync, om inte ännu bättre:

cp -a rsync -aSHAX star -sparse -ctime -xattr -acl
protected files sudo sudo sudo
dense files ok - ok
sparse files ok ok ok
directories ok ok ok
block devices sudo sudo sudo
character devices sudo sudo sudo
named pipes ok ok ok
sockets ok ok ok
symbolic links ok ok ok
hard links ok ok ok
file owner sudo sudo sudo
member group ok ok sudo
other group sudo sudo sudo
permission bits ok ok ok
access timestamp ok - ok
modify timestamp ok ok ok
change timestamp - - sudo
security context sudo sudo sudo
trusted attributes sudo sudo sudo
user attributes ok ok ok
access control lists ok ok ok


Vi ser att star kräver sudo för att bevara member group, vilket rent bevarandemässigt egentligen är det enda som är sämre. Det går att tvinga dense files till sparse med -force-hole precis som --spase=always gör för cp. Att star kan bevara change timestamp är riktigt imponerande. Jag kan inte minnas att jag sett något annat program som klarar av den biten.

Nackdelen med star är, förutom att att syntaxen är betydligt svårare att komma ihåg än cp -a, att programmen inte finns installerat från början. Det är iofs inte svårare att komma runt än ett enkelt sudo apt-get install star, så det gör kanske inte så mycket.

Fördelen är å andra sidan, förutom att star bevarar mest av det jag testat hittills, att man kan spara undan star-arkiv för uppackning vid ett senare tillfälle. Syntaxen blir lite annorlunda än när man bara kopierar...

Skapa ett star-arkiv:

Kod: Markera allt

cd /old/home/.
sudo star -c -dump -sparse -acl -xattr . | xz >/tmp/arkiv.star.xz
Packa upp ett star-arkiv:

Kod: Markera allt

cd /new/.
xzcat /tmp/arkiv.star.xz | sudo star -x -acl -xattr -ctime
Det går faktiskt att packa upp star-arkiven med vanliga tar också, men då bevaras bara sådant som tar klarar av, dvs inte sockets eller de utökade attributen.
Användarvisningsbild
ajja
Inlägg: 682
Blev medlem: 15 dec 2007, 23:43
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Motala
Kontakt:

Re: Lustigt kommando från wikin

Inlägg av ajja »

@Konservburk
Det du har åstadkommit i tråden är något av det bättre jag läst på länge (och jag menar det, så ta åt dig ;) ).
Min önskan, om du har tid till, är att du friserar detta, ditt bidrag, till att gälla kopiering i allmänhet och /home i synnerhet och lägger upp detta i Wikin, då detta är ett bra tillskott, må hända inte allt för nybörjar vänligt, men alla är bara nybörjare i början.
Skriv svar

Återgå till "Terminalforum"