Shell/TAR/RAR hittar ...(Har blivit en backup-metod) [LÖST]
Re: Shell/TAR/RAR hittar inga filer (Har blivit en backup-metod)
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.
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.
Att kopiera endast vissa filer och katalogstruktur samtidigt
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å?
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å?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Shell/TAR/RAR hittar inga filer (Har blivit en backup-metod)
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:
-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 -avm -f"+ 0backup.tar.gz" -f"-! */" ~ /media/IOMEGA_HDD/home
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
Re: Shell/TAR/RAR hittar inga filer (Har blivit en backup-metod)
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.
Den gör INTE en exakt kopia av katalogstrukturen. Tyvärr, tyvärr.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Shell/TAR/RAR hittar inga filer (Har blivit en backup-metod)
Då måste du gjort på fel sätt. Exakta kopior av katalogstrukturen är vad rsync gör bästforingmar skrev:rsync har jag provat. Empiriskt.
Den gör INTE en exakt kopia av katalogstrukturen.

Kod: Markera allt
rsync -av katalog1/ katalog2/
TAR beter sig konstigt
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å?
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å?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: TAR beter sig konstigt
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:Meningen är att skapa filen 0backup.tar.gz i varenda katalog som överhuvudtaget finns under /home/<username>/
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: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 -- .
Kod: Markera allt
cd "/home/<username>/Dokument/Misc" && cat mycket_hemliga_filen | sudo -S tar -zcvpf 0backup.tar.gz --no-recursion -- *
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 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å?
TAR beter sig konstigt
"/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.
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.
TAR beter sig konstigt
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.
fungerar nog bra då man kör det i terminalen. Tack för tipset.
Förflytta i stället för kopiera?
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?
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?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Förflytta i stället för kopiera?
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.
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.tar: *: Funktionen stat misslyckades. Filen eller katalogen finns inte
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 -- *
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:Dessutom så har scriptet vid det här laget redan med framgång avverkat rätt många tomma kataloger utan problem.
Ja, du kan använda --remove-source-files för att bli av med orginalen: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?
Kod: Markera allt
rsync -rvm --delete --remove-source-files -f"+ 0backup.tar.gz" -f"-! */" ~ /media/IOMEGA_HDD/home
Helt säker, jo!
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.
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.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Helt säker, jo!
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: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.
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:I den där katalogen med 152 filer fanns inte en enda dold fil, och inga kataloger.
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.
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: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?
Kod: Markera allt
.* *
Kod: Markera allt
.[!.]* ..?* *
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
En helt ny infallsvinkel
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?
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?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: En helt ny infallsvinkel
Det stämmer bra. Precis allt kommer med.foringmar skrev:Om man använder TAR recursivt så tas också dolda filer och kataloger med i arkivet, inte sant?
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
Kod: Markera allt
sed -i 's/^.\{,6\}//' filen.txt
En lösning på problemet
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.
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.