Shell/TAR/RAR hittar ...(Har blivit en backup-metod) [LÖST]

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Rune.K
Inlägg: 6437
Blev medlem: 09 jul 2008, 17:19
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Shell/TAR/RAR hittar inga filer (Har blivit en backup-metod)

Inlägg av Rune.K »

Det här inlägget är naturligtvis OT.

Men käre moderator, läs igenom hela tråden innan du tar bort mitt inlägg.
Och framför allt läs första inlägget.
Kanske någon kan ha nytta av mitt inlägg.

Jag blir lite nostalgisk när jag läser i den här tråden.

Min första PC var en IBM XT/AT med hela ca 637 kb i minne (dvs mindre än 1 MB) och med en hårddisk på 21 MB, OS-et var DOS 3.30 .
Skrev en del program i Turbo Pascal...
Bl.a en egen filhanterare som fungerar i win9x win2k och winxp, har inte testat i win vista.
(Det var 92/93 då Linux var i sin barndom.)


Min andra PC var en 133MHz Pentium med win95.
Då började jag skriva program i Delphi 4 och Visual Basic.
(Lite skryt, jag fick faktiskt betalt för 3 stycken program jag skrev, "ler lite fånigt".)

Jag hade STORA problem innan jag kom underfund med att win95 var ett händelsestyrt och multitasking OS i motsats till DOS 3.30.

I DOS så kördes mina program rad för rad, dvs programmet hoppade till inte nästa rad förrän föregående rad var helt klar med sitt uppdrag.


Jag har även sysslat en hel del med bat-filer win9x o winxp, bl.a för backup...
Tyvärr har jag inte börjat scripta i bash eller sh, jag har inte haft behov av det, men det verkar väldigt intressant!!!

mvh rune
PS det jag skriver är nog lite otydligt, men jag hoppas att det är någon som förstår vad jag menar.
foringmar
Inlägg: 36
Blev medlem: 14 jul 2008, 11:03
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS

Att kopiera endast vissa filer och katalogstruktur samtidigt

Inlägg av foringmar »

find ~ -iname '0backup.tar.gz' -exec cp -uv {} /media/IOMEGA_HDD/home/ \;

Jo, det var just det. Det här åstadkommer inte det jag vill åstadkomma.

Låt oss nu anta att jag har t.ex.

/home/<username>/0backup.tar.gz
/home/<username>/Dokument/0backup.tar.gz
/home/<username>/Dokument/personligt/0backup.tar.gz

och en massa andra 0backup.tar.gz i varje katalog

Jag vill ha en kopiering/flyttning som föser iväg alla 0backup.tar.gz till

/media/IOMEGA_HDD/home/<username>/0backup.tar.gz
/media/IOMEGA_HDD/home/<username>/Dokument/0backup.tar.gz
/media/IOMEGA_HDD/home/<username>/Dokument/personligt/0backup.tar.gz

Men det går ju inte med

cp -urv /home/<username> /media/IOMEGA_HDD/home

eftersom det inte går att säga att endast vissa filer skall kopieras. (Och här spökar nu XCOPY och XXCOPY i mina tankar.)

mv är lika. Det är allt eller intet.

Det skulle ju gå att skapa ett delscript som utförde:

cp -uv /home/<username>/0backup.tar.gz /media/IOMEGA_HDD/home/<username>/0backup.tar.gz
cp -uv /home/<username>/Dokument/0backup.tar.gz /media/IOMEGA_HDD/home/<username>/Dokument/0backup.tar.gz
cp -uv /home/<username>/Dokument/personligt/0backup.tar.gz /media/IOMEGA_HDD/home/<username>/Dokument/personligt/0backup.tar.gz

följt av ett annat delscript som utförde:

rm /home/<username>/0backup.tar.gz
rm /home/<username>/Dokument/0backup.tar.gz
rm /home/<username>/Dokument/personligt/0backup.tar.gz

Men det måste väl rimligtvis finnas något mera kompakt än så?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Shell/TAR/RAR hittar inga filer (Har blivit en backup-metod)

Inlägg av Konservburk »

Det finns ett mycket kompitent kopierings-program som heter rsync. Man kan ange listor som matchar exakt vad som ska kopieras och vad som inte ska kopieras. Om vi tar ditt problem som ett exempel:

Kod: Markera allt

rsync -avm -f"+ 0backup.tar.gz" -f"-! */" ~ /media/IOMEGA_HDD/home
-avm talar om för rsync att den ska
a: arkiv-kopiera (ta med underkataloger, bevara rättigheter, osv),
v: tala om vad den gör,
m: strunta helt i kataloger som inte innehåller någon fil som ska kopieras.

-f"+ 0backup.tar.gz" angera att alla filer som heter 0backup.tar.gz ska kopieras.
-f"-! */" utesluter därefter alla andra filer som inte är kataloger från kopieringen.

Själva kopieringen sker från ~, dvs /home/username till /media/IOMEGA_HDD/home.

Ett hett tips är att använda flaggan -n medan man testar, eftersom rsync då bara talar om vad den tänker kopiera, utan att faktiskt kopiera någonting.

Kod: Markera allt

rsync -n -avm -f"+ 0backup.tar.gz" -f"-! */" ~ /media/IOMEGA_HDD/home
foringmar
Inlägg: 36
Blev medlem: 14 jul 2008, 11:03
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS

Re: Shell/TAR/RAR hittar inga filer (Har blivit en backup-metod)

Inlägg av foringmar »

rsync har jag provat. Empiriskt. Redan innan jag påbörjade den här tråden.

Den gör INTE en exakt kopia av katalogstrukturen. Tyvärr, tyvärr.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Shell/TAR/RAR hittar inga filer (Har blivit en backup-metod)

Inlägg av Konservburk »

foringmar skrev:rsync har jag provat. Empiriskt.

Den gör INTE en exakt kopia av katalogstrukturen.
Då måste du gjort på fel sätt. Exakta kopior av katalogstrukturen är vad rsync gör bäst :)

Kod: Markera allt

rsync -av katalog1/ katalog2/
Om katalog2 inte är tom från början och du vill att katalog1 och katalog2 ska få en identisk struktur så måste du även ange --delete så att rsync plockar bort filer från katalog2 om de inte finns i katalog1.
foringmar
Inlägg: 36
Blev medlem: 14 jul 2008, 11:03
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS

TAR beter sig konstigt

Inlägg av foringmar »

Medan jag skriver dessa rader så rullar en provkörning på i bakgrunden. Jag har redan noterat vissa problem. Det är TAR som protesterar, men jag förstår inte riktigt varför och felmeddelandet rusar förbi så fort att jag inte hinner läsa det ordentligt.

Meningen är att skapa filen 0backup.tar.gz i varenda katalog som överhuvudtaget finns under /home/<username>/

Följande rad som jag plockat ut ur ett script med en lång räcka liknande rader fungerar inte. Varken som en del av scriptet eller då man kör den i terminalen skilt för sig.

cd "/home/<username>/Dokument/Misc" && cat mycket_hemliga_filen | sudo -S tar -zcvpf 0backup.tar.gz --no-recursion *

Följande felmeddelande kommer då man kör det här som enda raden i terminalen.

tar: ogiltig flagga -- .

Och det enda som skiljer den här raden från tusentals andra i scriptet är namnet på katalogen. I övrigt är den identisk med alla andra. Om den här körs som en del av ett script så meddelas någonting om att "stat" misslyckades. NU lyckades jag. Felmeddelandet ser ut exakt så här:

tar: *: Funktionen stat misslyckades. Filen eller katalogen finns inte
tar: Avslut med felstatus fördröjd från föregående fel.

De här incidenterna ökar i antal ju längre scriptet rullar, men jag vet inte om det finns en koppling till scriptets längd.

Vad kan det här bero på?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: TAR beter sig konstigt

Inlägg av Konservburk »

foringmar skrev:Meningen är att skapa filen 0backup.tar.gz i varenda katalog som överhuvudtaget finns under /home/<username>/
Jag får mer och mer känslan av att du försöker gå över ån för att hämta vatten.
foringmar skrev:Följande rad som jag plockat ut ur ett script med en lång räcka liknande rader fungerar inte. Varken som en del av scriptet eller då man kör den i terminalen skilt för sig.

cd "/home/<username>/Dokument/Misc" && cat mycket_hemliga_filen | sudo -S tar -zcvpf 0backup.tar.gz --no-recursion *

Följande felmeddelande kommer då man kör det här som enda raden i terminalen.

tar: ogiltig flagga -- .
Sånt där brukar hända om * expanderar till något som tar misstolkar som en felaktig flagga. Det kan man undvika genom att sätta -- precis * för att tala om att resten av argumenten faktiskt inte är några flaggor:

Kod: Markera allt

cd "/home/<username>/Dokument/Misc" && cat mycket_hemliga_filen | sudo -S tar -zcvpf 0backup.tar.gz --no-recursion -- *
foringmar skrev:Och det enda som skiljer den här raden från tusentals andra i scriptet är namnet på katalogen. I övrigt är den identisk med alla andra. Om den här körs som en del av ett script så meddelas någonting om att "stat" misslyckades. NU lyckades jag. Felmeddelandet ser ut exakt så här:

tar: *: Funktionen stat misslyckades. Filen eller katalogen finns inte
tar: Avslut med felstatus fördröjd från föregående fel.

De här incidenterna ökar i antal ju längre scriptet rullar, men jag vet inte om det finns en koppling till scriptets längd.

Vad kan det här bero på?
Det där felmeddelande får du när * inte expanderar öht, dvs när det inte finns några filer alls i katalogen. Då lämnar skalet kvar * utan ändring och tar tror att den ska packa ner en fil som heter just "*", vilket ju inte alls går eftersom det inte finns någon sådan fil.
foringmar
Inlägg: 36
Blev medlem: 14 jul 2008, 11:03
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS

TAR beter sig konstigt

Inlägg av foringmar »

"/home/<username>/Dokument/Misc"

innehåller 152 st filer på sammanlagt 13479K. Så felmeddelandet kan väl inte rimligtvis bero på att katalogen är tom. Dessutom så har scriptet vid det här laget redan med framgång avverkat rätt många tomma kataloger utan problem.
foringmar
Inlägg: 36
Blev medlem: 14 jul 2008, 11:03
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS

TAR beter sig konstigt

Inlägg av foringmar »

cd "/home/<username>/Dokument/Misc" && cat mycket_hemliga_filen | sudo -S tar -zcvpf 0backup.tar.gz --no-recursion -- *

fungerar nog bra då man kör det i terminalen. Tack för tipset.
foringmar
Inlägg: 36
Blev medlem: 14 jul 2008, 11:03
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS

Förflytta i stället för kopiera?

Inlägg av foringmar »

Kan man modifiera

rsync -rvm --delete -f"+ 0backup.tar.gz" -f"-! */" ~ /media/IOMEGA_HDD/home

så att det förflyttar alla 0backup.tar.gz i stället för att enbart kopiera?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Förflytta i stället för kopiera?

Inlägg av Konservburk »

foringmar skrev:"/home/<username>/Dokument/Misc"

innehåller 152 st filer på sammanlagt 13479K. Så felmeddelandet kan väl inte rimligtvis bero på att katalogen är tom.
tar: *: Funktionen stat misslyckades. Filen eller katalogen finns inte
Det här felmeddelandet betyder inget annat än att tar försöker komma åt en fil som heter * verbatim, men som inte finns. Enda sättet det kan inträffa är om * inte expanderar alls, vilket händer i tomma kataloger, men även i kataloger med enbart dolda filer (alla filnamn inleds med en punkt) eftersom * inte ser dessa öht. Det är med andra ord inte speciellt vettigt att använda * om du vill arkivera även dolda filer. Det blir även problem med * om du har kataloger med för många filer.

Felsök genom att köra kommandot löst utanför skriptet. Om du sätter ett echo framför tar så kan du se vilket kommando som faktiskt skulle körts när expansionen av * är avklarad.

Kod: Markera allt

cd "/home/<username>/Dokument/Misc" && cat mycket_hemliga_filen | sudo -S echo tar -zcvpf 0backup.tar.gz --no-recursion -- *
foringmar skrev:Dessutom så har scriptet vid det här laget redan med framgång avverkat rätt många tomma kataloger utan problem.
Och det är du helt säker på? Jag är övertygad om att du inte kan använda * i en helt tom katalog utan att råka ut för det där felet.
foringmar skrev:Kan man modifiera

rsync -rvm --delete -f"+ 0backup.tar.gz" -f"-! */" ~ /media/IOMEGA_HDD/home

så att det förflyttar alla 0backup.tar.gz i stället för att enbart kopiera?
Ja, du kan använda --remove-source-files för att bli av med orginalen:

Kod: Markera allt

rsync -rvm --delete --remove-source-files -f"+ 0backup.tar.gz" -f"-! */" ~ /media/IOMEGA_HDD/home
foringmar
Inlägg: 36
Blev medlem: 14 jul 2008, 11:03
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS

Helt säker, jo!

Inlägg av foringmar »

Nåja, jag är såtillvida helt säker att jag har observerat några kataloger som inte innehåller några filer och inte några kataloger heller. Inne i katalogen som inte innehåller några filer eller andra kataloger skapas nog 0backup.tar.gz med en storlek på 44 bits. Storleken tar jag nu ur minnet eftersom jag just nu sitter framför en annan dator än den där det här har observerats. Men, jo, jag är helt säker. 0backup.tar.gz skapas också i en tom katalog.
I den där katalogen med 152 filer fanns inte en enda dold fil, och inga kataloger.

Jag provade också att förflytta focus till en tom katalog och där köra
tar -zcvpf 0backup.tar.gz --no-recursion *
Det gick hur bra som helst. Det där gjorde jag redan innan jag började skapa mitt stora script som går igenom alla kataloger, eftersom jag ville se hur tar beter sig i en tom katalog. Det här är nu problematiskt eftersom det tydligen är så att ibland beter sig det här på det ena sättet och ibland på det andra sättet.

Men om man inte kan/skall använda * för att ange att man vill ha med alla filer, rubb och stubb, inklusive dolda, vad skall man då använda i stället?
Skall man använda en punkt?

Jag provkörde redan i terminalen. Det har jag redan skrivit om. Det var då som det kom felmeddelandet
tar: ogiltig flagga -- .

Samma kommando som en del av ett script gav:

tar: *: Funktionen stat misslyckades. Filen eller katalogen finns inte
och så vidare.

Jag skall prova echo då jag kommer hem, och kommer åt den aktuella datorn där det här inträffar.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Helt säker, jo!

Inlägg av Konservburk »

foringmar skrev:Nåja, jag är såtillvida helt säker att jag har observerat några kataloger som inte innehåller några filer och inte några kataloger heller. Inne i katalogen som inte innehåller några filer eller andra kataloger skapas nog 0backup.tar.gz med en storlek på 44 bits. Storleken tar jag nu ur minnet eftersom jag just nu sitter framför en annan dator än den där det här har observerats. Men, jo, jag är helt säker. 0backup.tar.gz skapas också i en tom katalog.
Det förvånar mig inte det minsta. Det ska skapas en 0backup.tar.gz också i en helt tom katalog, men tar borde även ge just det felmeddelandet som du har fått.
foringmar skrev:I den där katalogen med 152 filer fanns inte en enda dold fil, och inga kataloger.
Har du provat att köra kommandot löst i den katalogen? Jag tycker inte att du borde få något felmeddelande alls.
foringmar skrev:Jag provade också att förflytta focus till en tom katalog och där köra
tar -zcvpf 0backup.tar.gz --no-recursion *
Det gick hur bra som helst. Det där gjorde jag redan innan jag började skapa mitt stora script som går igenom alla kataloger, eftersom jag ville se hur tar beter sig i en tom katalog. Det här är nu problematiskt eftersom det tydligen är så att ibland beter sig det här på det ena sättet och ibland på det andra sättet.

Jag har ytterst svårt att tro på en ibland-förklaring. Däremot kan det fungera lite olika för dig och mig om vi använder olika skal, eller har något olika inställningar för våra skal. Just hur * beter sig när det inte finns något att expandera till är t.ex. inställningsbart. Det verkar som att du har inställningen nullglob, vilket betyder att * expanderas till ingenting om expansionen misslyckas. Det skulle kunna förklara varför det blir skillnad när du kör löst jämfört med i skript. I skript är det nämligen så att alla dylika inställningar måste göras explicit för varje skript.
foringmar skrev:Men om man inte kan/skall använda * för att ange att man vill ha med alla filer, rubb och stubb, inklusive dolda, vad skall man då använda i stället?
Skall man använda en punkt?
En enkel punkt betyder den nuvarande katalogen. Det kan du bara använda när du kör rekursivt, annars får du inte med några filer alls (förutom just den nuvarande katalogen). För att få med dolda filer kan man skriva så här:

Kod: Markera allt

.* *
Men då får du även med . och .. katalogerna, vilket du med största sannolikhet inte vill. Man kan såklart göra det hela ännu mer komplicerat för att få med alla dolda filer utom just de:

Kod: Markera allt

.[!.]* ..?* *
Men ett sådant tillvägagångsätt skapar tyvärr fler problem än det löser. Du kommer t.ex. att få kvar skräp som inte expanderas i kataloger som saknar dolda filer, vilket kommer att ge en massa felmeddelanden.

Rent allmänt är * något som funkar för det mesta, men långt ifrån alltid... egentligen ingenting man vill använda i skript helt enkelt. Rätt sätt att göra detta på är snarare att välja ut filer med kommandot find och sedan skicka dessa till tar för packning. Det är precis vad jag gjorde i mitt skript som jag postade längre upp i tråden (det som du inte fick att fungera). Här är den relevanta biten från skriptet (något justerad):

Kod: Markera allt

find -mindepth 1 -maxdepth 1 -print0 | xargs -0 tar -rvpf 0backup.tar && gzip 0backup.tar
Detta packar ner allting från den nuvarande katalogen till filen 0backup.tar.gz (som hamnar i den nuvarande katalogen). Skillnaden mot mitt skript är att du nu inte får med sökvägen listad i själva arkivet, vilket betyder att du inte har en susning om var de nerpackade filerna faktiskt kommer ifrån. Själv skulle jag behållit sökvägin innuti arkivet för att göra det enkelt för mig istället för att förlita mig på en extern katalogstruktur.
foringmar
Inlägg: 36
Blev medlem: 14 jul 2008, 11:03
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS

En helt ny infallsvinkel

Inlägg av foringmar »

Jag tror att jag får pröva på en helt ny infallsvinkel på hela problemet.
Om man använder TAR recursivt så tas också dolda filer och kataloger med i arkivet, inte sant?

Om jag har en fil med en massa rader och t.ex. vill bli av med de sex eller sju första tecknen på varje rad, hur använder jag CUT för att åstadkomma det?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: En helt ny infallsvinkel

Inlägg av Konservburk »

foringmar skrev:Om man använder TAR recursivt så tas också dolda filer och kataloger med i arkivet, inte sant?
Det stämmer bra. Precis allt kommer med.
foringmar skrev:Om jag har en fil med en massa rader och t.ex. vill bli av med de sex eller sju första tecknen på varje rad, hur använder jag CUT för att åstadkomma det?

Kod: Markera allt

cut -c7- gamla_filen.txt > nya_filen.txt
Det går även att göra med sed om man vill:

Kod: Markera allt

sed -i 's/^.\{,6\}//' filen.txt
foringmar
Inlägg: 36
Blev medlem: 14 jul 2008, 11:03
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS

En lösning på problemet

Inlägg av foringmar »

Att göra en backup med TAR utan att för den skull skapa för stora paket som inte kan lagras på en vfat hårdskiva.

Vid det här laget har jag givit upp angående att få --no-recursion att fungera vettigt i TAR.

Jag har nu skapat ett script som skapar ibland ett paket för en ensam katalog och ibland ett paket för en grupp kataloger. Det här scriptet fungerar dels efter vissa manuella justeringar och dels automatiskt. I början får man dock lägga in lite mera manuellt arbete. Det här scriptet fungerar i moduler. Man kan ha hur många moduler som helst i princip. Här kommer den modul som tar hand om /home/<username>/

# /home/<username>
# Det här skapar en lista på kataloger som skall packas
cat mycket_hemliga_filen | sudo -S find /home/<username> -maxdepth 1 -type d -fprint /home/<username>/backup/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod u+rwx /home/<username>/backup/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod g+rwx /home/<username>/backup/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod o+rwx /home/<username>/backup/dir00.txt
# Sorterar listan
sort /home/<username>/backup/dir00.txt > /home/<username>/backup/dir01.txt
grep /home/<username>/ /home/<username>/backup/dir01.txt > /home/<username>/backup/dir00.txt
cut -d/ -f4 /home/<username>/backup/dir00.txt > /home/<username>/backup/dir02.txt
cp /home/<username>/backup/dir02.txt /home/<username>/backup/01tgz.txt
cp /home/<username>/backup/dir02.txt /home/<username>/backup/dir00.txt
# Följande kataloger ger som sådana för stora paket
grep -vi C_Clipart /home/<username>/backup/dir00.txt > /home/<username>/backup/dir01.txt
grep -vi Dokument /home/<username>/backup/dir01.txt > /home/<username>/backup/dir00.txt
grep -vi Video /home/<username>/backup/dir00.txt > /home/<username>/backup/dir01.txt
grep -vi Musik /home/<username>/backup/dir01.txt > /home/<username>/backup/dir00.txt
grep -vi Bilder /home/<username>/backup/dir00.txt > /home/<username>/backup/dir01.txt
grep -vi Programpaket /home/<username>/backup/dir01.txt > /home/<username>/backup/dir00.txt
grep -vi C_Photos /home/<username>/backup/dir00.txt > /home/<username>/backup/dir01.txt
# Följande katalog bör åtgärdas allra sist
grep -vi backup /home/<username>/backup/dir01.txt > /home/<username>/backup/dir00.txt
cp /home/<username>/backup/dir00.txt /home/<username>/backup/dir01.txt
# Följande kommando finns i filen 01tgztill.txt
# cd /home/<username> && cat mycket_hemliga_filen | sudo -S tar -zcvpf /1stbckup/tar_home/0000home.tar.gz --exclude-from=/home/<username>/backup/01tgz.txt .
# Raderna ovan är en grund för vidare provkörning
# dir01.txt innehåller grunden för fortsättningen
cp /home/<username>/backup/dir01.txt /home/<username>/backup/names00.txt
# names00.txt behöver fixas till en smula
# Alla punkter ändras till _ och mellanslag likaså
sed -i 's/\./_/g' /home/<username>/backup/names00.txt
sed -i 's/ /_/g' /home/<username>/backup/names00.txt
sed -i 's,$,\.tar.gz \.,' /home/<username>/backup/names00.txt
sed -i 's,^, \&\& cat mycket_hemliga_filen \| sudo -S tar -zcvpf /1stbckup/tar_home/,' /home/<username>/backup/names00.txt
# Och sedan första delen av raderna
sed -i 's,$,",' /home/<username>/backup/dir01.txt
sed -i 's,^,cd "/home/<username>/,' /home/<username>/backup/dir01.txt
paste /home/<username>/backup/dir01.txt /home/<username>/backup/names00.txt > /home/<username>/backup/dir03.txt
cat /home/<username>/backup/script_head.txt /home/<username>/backup/01tgztill.txt /home/<username>/backup/dir03.txt > /home/<username>/backup/01tgzback.sh
cat mycket_hemliga_filen | sudo -S chmod u+rwx /home/<username>/backup/01tgzback.sh
cat mycket_hemliga_filen | sudo -S chmod g+rwx /home/<username>/backup/01tgzback.sh
cat mycket_hemliga_filen | sudo -S chmod o+rwx /home/<username>/backup/01tgzback.sh
# Gör själva backupen
sh /home/<username>/backup/01tgzback.sh
# Efter det här kan man börja anpassa med tanke på stora paket som uppstått efter den första körningen

Jag valde att numrera varje moduls backupscript (här 01tgzback.sh) för att om så önskas kunna köra vart och ett av dem skilt för sig. Det här kan man låta bli att göra om man kör hela samlingsscriptet från början till slut:

# !/bin/sh

# This is a generic script head
- modul nr 1
- modul nr 2
- modul nr 3
osv...
cd /home/<username>/backup && cat mycket_hemliga_filen | sudo -S tar -zcvpf /1stbckup/tar_home/backup.tar.gz .

Här kommer den modul som tar hand om /home/<username>/Dokument:
Här finns en katalog /home/<username>/Dokument/turklipp som senare säkerhetskopieras i en egen modul

# Dokument
# Det mesta kan kopieras från scriptets tidigare rader
# Det här skapar en lista på kataloger som skall packas
cat mycket_hemliga_filen | sudo -S find /home/<username>/Dokument -maxdepth 1 -type d -fprint /home/<username>/backup/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod u+rwx /home/<username>/backup/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod g+rwx /home/<username>/backup/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod o+rwx /home/<username>/backup/dir00.txt
# Sorterar listan
sort /home/<username>/backup/dir00.txt > /home/<username>/backup/dir01.txt
grep /home/<username>/Dokument/ /home/<username>/backup/dir01.txt > /home/<username>/backup/dir00.txt
# jfr med -f4 i den förra modulen. Här finns en nivå till. .../Dokument/turklipp har sedan -f6
cut -d/ -f5 /home/<username>/backup/dir00.txt > /home/<username>/backup/dir02.txt
cp /home/<username>/backup/dir02.txt /home/<username>/backup/05tgz.txt
cp /home/<username>/backup/dir02.txt /home/<username>/backup/dir00.txt
# Eventuella åtgärder för stora paket
grep -vi turklipp /home/<username>/backup/dir00.txt > /home/<username>/backup/dir01.txt
# cp /home/<username>/backup/dir02.txt /home/<username>/backup/dir01.txt
# Följande kommando finns i filen 05tgztill.txt
# cd /home/<username>/Dokument && cat mycket_hemliga_filen | sudo -S tar -zcvpf /1stbckup/tar_home/Dokument_0000pack.tar.gz --exclude-from=/home/<username>/backup/05tgz.txt .
# Raderna ovan är en grund för vidare provkörning
# dir01.txt innehåller grunden för fortsättningen
cp /home/<username>/backup/dir01.txt /home/<username>/backup/names00.txt
# names00.txt behöver fixas till en smula
# Alla eventuella punkter ändras till _ och mellanslag likaså
sed -i 's/\./_/g' /home/<username>/backup/names00.txt
sed -i 's/ /_/g' /home/<username>/backup/names00.txt
sed -i 's,$,\.tar.gz \.,' /home/<username>/backup/names00.txt
sed -i 's,^, \&\& cat mycket_hemliga_filen \| sudo -S tar -zcvpf /1stbckup/tar_home/Dokument_,' /home/<username>/backup/names00.txt
# Och sedan första delen av raderna
sed -i 's,$,",' /home/<username>/backup/dir01.txt
sed -i 's,^,cd "/home/<username>/Dokument/,' /home/<username>/backup/dir01.txt
paste /home/<username>/backup/dir01.txt /home/<username>/backup/names00.txt > /home/<username>/backup/dir03.txt
cat /home/<username>/backup/script_head.txt /home/<username>/backup/05tgztill.txt /home/<username>/backup/dir03.txt > /home/<username>/backup/05tgzback.sh
cat mycket_hemliga_filen | sudo -S chmod u+rwx /home/<username>/backup/05tgzback.sh
cat mycket_hemliga_filen | sudo -S chmod g+rwx /home/<username>/backup/05tgzback.sh
cat mycket_hemliga_filen | sudo -S chmod o+rwx /home/<username>/backup/05tgzback.sh
#
sh /home/<username>/backup/05tgzback.sh
# Efter det här kan man börja anpassa med tanke på stora paket som uppstått efter den första körningen

När man kör det här i uppbyggnadsskedet så får man lov att lite pröva sig fram, om man inte på förhand kan räkna ut vilka kataloger som behöver en egen modul.

I och med det här så tror jag att problemet med att få gjort en backup med TAR i tillräckligt små beståndsdelar kan betraktas som löst. Jag har satt begränsningen på paketstorleken sådan att varje paket skall rymmas ensamt eller tillsammans med andra på en CD. Alltså max högst 700 MB.

Om nu någon ännu kommer på något som jag missat, som t.ex. att det här inte skulle ta med allting eller något annat dylikt, så ber jag vederbörande hojta till nu.
Skriv svar

Återgå till "Terminalforum"