Anders Tall

tar-grunder: skapa, förstå och verifiera arkiv

3 min läsning

tar är den klassiska startpunkten på Linux när du vill flytta, kopiera eller backa upp data. Men de flesta lär sig det som “en rad man råkar ha i anteckningarna”. Det här är grunderna: de enkla, bärande delarna som allt annat bygger på. Skriven version av tar-basisserien — vad kommandona gör, varför, och hur du bevisar att resultatet faktiskt funkar.

En fil in, en fil ut

Det enklaste tar kan göra, bevisat från början till slut: en fil in i ett arkiv, samma fil ut igen — en hel round-trip.

mkdir -p /tmp/pilot && echo 'hello world' > /tmp/pilot/notes.txt
tar -czf /tmp/pilot/notes.tar.gz -C /tmp/pilot notes.txt
mkdir -p /tmp/pilot/restored
tar -xzf /tmp/pilot/notes.tar.gz -C /tmp/pilot/restored
cat /tmp/pilot/restored/notes.txt      # -> hello world

Att packa upp i en separat mapp är hela poängen: arkivet håller en kopia, så att packa upp på annat håll och få tillbaka filen bevisar att round-tripen verkligen funkar.

-C-flaggan förtjänar krediten: den byter katalog först, så arkivet lagrar notes.txt — inte ett kluster av nästlade sökvägar som du måste kravla dig igenom vid återställning.

Flaggorna, tydda

Sluta memorera rader utantill. Varje bokstav är ett jobb:

Ett litet arkiv att titta i:

mkdir -p /tmp/pilot2 && echo data > /tmp/pilot2/a.txt
tar -czf /tmp/pilot2/out.tar.gz -C /tmp/pilot2 a.txt
tar -tf /tmp/pilot2/out.tar.gz                # lista innehåll
gzip -t /tmp/pilot2/out.tar.gz && echo OK     # komprimeringsströmmen OK
tar -tzvf /tmp/pilot2/out.tar.gz              # utförlig lista

-t listar utan att röra filsystemet; gzip -t kontrollerar komprimeringslagret, som är separat från tars eget format. -v gör varje lista till per-fil-detalj.

En säkerhetskopia du kan bevisa

En säkerhetskopia du inte testat är ingen säkerhetskopia. Arkivera ett projekt, hoppa medvetet över en skräp-cachemapp, återställ på annat håll, och bevisa sedan att återställningen matchar originalet:

mkdir -p /tmp/project/{src,cache} && echo code > /tmp/project/src/app.py
echo junk > /tmp/project/cache/tmp.bin
tar -czf /tmp/project-backup.tar.gz --exclude=cache -C /tmp/project .
mkdir -p /tmp/restored-project
tar -xzf /tmp/project-backup.tar.gz -C /tmp/restored-project
diff -r /tmp/project/src /tmp/restored-project/src && echo RESTORE-OK

--exclude=cache lämnar skräpet utanför arkivet; diff -r är det riktiga testet. Identisk in i minsta byte — eller så funkade det inte.

Regeln bakom videorna

Varje kommando i tar-serien kördes på riktigt, i en slasklåda, innan det kom in i en video. Allt som lär ut trasiga kommandon förstör förtroendet direkt. Innan du litar på något av detta ur minnet: kör det en gång själv och se att det gör vad du förväntar dig.

Se videorna:

#tar #tar.gz #backup #linux #terminal #self-hosting