Shell/TAR/RAR hittar ...(Har blivit en backup-metod) [LÖST]
Shell/TAR/RAR hittar ...(Har blivit en backup-metod) [LÖST]
Kan någon ge en förklaring till följande:
Den här kommandoraden fungerar alldeles utmärkt då man kör den i terminalen:
rar a /media/IOMEGA_HDD/tar_home/000005 /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/*
men samma kommando fungerar överhuvudtaget inte som en beståndsdel i ett script. Då finns det mitt i allt inga filer i den angivna katalogen.
TAR beter sig på samma sätt. Fast då ser ju kommandot aningen annorlunda ut förstås. Syntaxen är ju annorlunda. Men i princip. TAR beter sig på motsvarande sätt. TAR hittar inte heller några filer i den angivna katalogen.
Och för att reta upp någon så skall jag påpeka att det här skulle fungera alldeles utmärkt som en beståndsdel i en DOS batch-fil som man kör på något av de ålderdomliga operativsystemen. DOS t.ex. Jag har i tiden gjort ganska många .BAT filer för DOS och Windows, så dem vågar jag påstå att kan någorlunda. Och här kommer utmaningen. Om ovannämnda kommando inte kan fås att fungera som en rad i ett script, så måste ju Linux vara sämre än DOS på den här punkten. Eller hur?
Obelix
Den här kommandoraden fungerar alldeles utmärkt då man kör den i terminalen:
rar a /media/IOMEGA_HDD/tar_home/000005 /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/*
men samma kommando fungerar överhuvudtaget inte som en beståndsdel i ett script. Då finns det mitt i allt inga filer i den angivna katalogen.
TAR beter sig på samma sätt. Fast då ser ju kommandot aningen annorlunda ut förstås. Syntaxen är ju annorlunda. Men i princip. TAR beter sig på motsvarande sätt. TAR hittar inte heller några filer i den angivna katalogen.
Och för att reta upp någon så skall jag påpeka att det här skulle fungera alldeles utmärkt som en beståndsdel i en DOS batch-fil som man kör på något av de ålderdomliga operativsystemen. DOS t.ex. Jag har i tiden gjort ganska många .BAT filer för DOS och Windows, så dem vågar jag påstå att kan någorlunda. Och här kommer utmaningen. Om ovannämnda kommando inte kan fås att fungera som en rad i ett script, så måste ju Linux vara sämre än DOS på den här punkten. Eller hur?
Obelix
Senast redigerad av 8 foringmar, redigerad totalt 20 gång.
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: Shell/TAR/RAR hittar inga filer
Det är klart att ovanstående ska fungera, det måste vara någonting kring det hela som gör att det inte funkar, som t.ex läs/skrivrättighet eller något sådant. Nu kan jag inte syntaxen för rar, men vad händer om du lägger in det här innan kommandot:
Jag är lite osäker på exakt utseende eftersom jag inte kan rar-kommandot, men meningen är alltså att du ska lista både "source" och "target".
Hur kör du scriptet förresten..?
För övrigt har du ju alldeles helt rätt i att OM scriptet inte hade fungerat när det är rätt utfört, så HADE Linux varit sämre än DOS, men risken för detta är nog i stort sett obefintlig...
Kod: Markera allt
ls -l /media/IOMEGA_HDD/tar_home/000005
ls -l /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY
Hur kör du scriptet förresten..?
För övrigt har du ju alldeles helt rätt i att OM scriptet inte hade fungerat när det är rätt utfört, så HADE Linux varit sämre än DOS, men risken för detta är nog i stort sett obefintlig...

Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Re: Shell/TAR/RAR hittar inga filer
Hej
Jag har kört vardera ls kommandot.
Det första meddelade att det inte finns någonting. Det är korrekt. En fil med namnet 000005 finns inte i den katalogen.
Där finns inte heller 00005.rar
RAR lägger automatiskt till filändelsen, men en sådan fil skall inte heller finnas där just nu, eftersom jag har raderat den.
Det andra kommandot hittade mycket riktigt de filer som skall finnas i den aktuella katalogen. Inga onormala fenomen här heller.
totalt 4228
-rw-r--r-- 1 <username> <username> 3861268 2008-07-29 01:25 dir00.txt
-rw-r--r-- 1 <username> <username> 457140 2008-07-30 03:08 dir02.txt
(De här filerna skall inte normalt finnas här, men jag har satt dit dem med vett och vilja, för att systemet skall ha någonting att jobba med)
Syntaxen för RAR i sin enklaste form är väldigt enkel: RAR a <target> <source>, där a står för arkivera. Det finns en massa andra flaggor förutom a, men i stort sett fungerar linux rar på samma sätt som rar i det ålderdomliga operativsystemet, där jag har använt RAR en hel del.
Nu har jag då kört RAR i terminalen:
rar a /media/IOMEGA_HDD/tar_home/000005 /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/*
Efter det här:
ls -l /media/IOMEGA_HDD/tar_home/000005
meddelar ls att filen eller katalogen inte finns.
Efter
ls -l /media/IOMEGA_HDD/tar_home/000005.rar
meddelas:
-rwx------ 1 <username> root 954812 2008-07-30 14:32 /media/IOMEGA_HDD/tar_home/000005.rar
(IOMEGA_HDD är en yttre hårdskiva med vfat filsystem. 160 GB.)
Nu skall jag göra samma sak med TAR:
I terminalen:
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion --directory=/home/ingmar/.adobe/Flash_Player/AssetCache/PDRPWJHY *
Det här fungerar inte riktigt bra i terminalen. Jag får en massa felmeddelanden. För varje katalognamn i /home/<username> som t.ex. katalogen xport:
xport: Funktionen "stat" misslyckades: Filen eller katalogen finns inte. Men det skapas nog också /media/IOMEGA_HDD/tar_home/000005.tar.gz med rätt innehåll.
Det fungerar om man inte använder flaggan --no-recursion. Det följande fungerar i terminalen.
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --directory=/home/ingmar/.adobe/Flash_Player/AssetCache/PDRPWJHY .
Det fungerar som en del av ett script också. Det har jag provat och kunnat konstatera. Men utan --no-recursion?? Med t.ex. följande rader i ett script:
tar -zcvpf /media/IOMEGA_HDD/tar_home/000002.tar.gz --directory=/home/ingmar/.adobe .
tar -zcvpf /media/IOMEGA_HDD/tar_home/000003.tar.gz --directory=/home/ingmar/.adobe/Flash_Player .
tar -zcvpf /media/IOMEGA_HDD/tar_home/000004.tar.gz --directory=/home/ingmar/.adobe/Flash_Player/AssetCache .
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --directory=/home/ingmar/.adobe/Flash_Player/AssetCache/PDRPWJHY .
Det här leder till att 000002.tar.gz innehåller allt som också finns i 00003.tar.gz, 00004.tar.gz och 00005.tar.gz
En massa saker arkiveras alltså flera gånger om.
Jag skulle väldigt gärna använda TAR, men det fungerar ju då inte heller fullständigt. Jag har provkört med följande lilla script:
# !/bin/sh
# This is a generic script head
tar -zcvpf /media/IOMEGA_HDD/tar_home/000001.tar.gz --no-recursion --directory=/home/<username>/ *
tar -zcvpf /media/IOMEGA_HDD/tar_home/000002.tar.gz --no-recursion --directory=/home/<username>/.adobe/ *
tar -zcvpf /media/IOMEGA_HDD/tar_home/000003.tar.gz --no-recursion --directory=/home/<username>/.adobe/Flash_Player/ *
tar -zcvpf /media/IOMEGA_HDD/tar_home/000004.tar.gz --no-recursion --directory=/home/<username>/.adobe/Flash_Player/AssetCache/ *
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion --directory=/home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/ *
som heter test.sh och har alla möjliga rättigheter påsatta.
sh test.sh eller sudo sh test.sh har använts. I vardera fallen skapas alla uppräknade .tar.gz men endast 00005.tar.gz har ett innehåll. Alla andra arkiv är tomma, fast det finns filer att arkivera. Och det kommer en myriad av: Funktionen "stat" misslyckades: Filen eller katalogen finns inte.
Du vill liksom inte inte hålla med om att DOS skulle vara bättre än Linux på den här punkten. Så länge som det inte fungerar i Linux, så ....
Men jag får väl återkomma till det här så småningom.
Obelix
Jag har kört vardera ls kommandot.
Det första meddelade att det inte finns någonting. Det är korrekt. En fil med namnet 000005 finns inte i den katalogen.
Där finns inte heller 00005.rar
RAR lägger automatiskt till filändelsen, men en sådan fil skall inte heller finnas där just nu, eftersom jag har raderat den.
Det andra kommandot hittade mycket riktigt de filer som skall finnas i den aktuella katalogen. Inga onormala fenomen här heller.
totalt 4228
-rw-r--r-- 1 <username> <username> 3861268 2008-07-29 01:25 dir00.txt
-rw-r--r-- 1 <username> <username> 457140 2008-07-30 03:08 dir02.txt
(De här filerna skall inte normalt finnas här, men jag har satt dit dem med vett och vilja, för att systemet skall ha någonting att jobba med)
Syntaxen för RAR i sin enklaste form är väldigt enkel: RAR a <target> <source>, där a står för arkivera. Det finns en massa andra flaggor förutom a, men i stort sett fungerar linux rar på samma sätt som rar i det ålderdomliga operativsystemet, där jag har använt RAR en hel del.
Nu har jag då kört RAR i terminalen:
rar a /media/IOMEGA_HDD/tar_home/000005 /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/*
Efter det här:
ls -l /media/IOMEGA_HDD/tar_home/000005
meddelar ls att filen eller katalogen inte finns.
Efter
ls -l /media/IOMEGA_HDD/tar_home/000005.rar
meddelas:
-rwx------ 1 <username> root 954812 2008-07-30 14:32 /media/IOMEGA_HDD/tar_home/000005.rar
(IOMEGA_HDD är en yttre hårdskiva med vfat filsystem. 160 GB.)
Nu skall jag göra samma sak med TAR:
I terminalen:
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion --directory=/home/ingmar/.adobe/Flash_Player/AssetCache/PDRPWJHY *
Det här fungerar inte riktigt bra i terminalen. Jag får en massa felmeddelanden. För varje katalognamn i /home/<username> som t.ex. katalogen xport:
xport: Funktionen "stat" misslyckades: Filen eller katalogen finns inte. Men det skapas nog också /media/IOMEGA_HDD/tar_home/000005.tar.gz med rätt innehåll.
Det fungerar om man inte använder flaggan --no-recursion. Det följande fungerar i terminalen.
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --directory=/home/ingmar/.adobe/Flash_Player/AssetCache/PDRPWJHY .
Det fungerar som en del av ett script också. Det har jag provat och kunnat konstatera. Men utan --no-recursion?? Med t.ex. följande rader i ett script:
tar -zcvpf /media/IOMEGA_HDD/tar_home/000002.tar.gz --directory=/home/ingmar/.adobe .
tar -zcvpf /media/IOMEGA_HDD/tar_home/000003.tar.gz --directory=/home/ingmar/.adobe/Flash_Player .
tar -zcvpf /media/IOMEGA_HDD/tar_home/000004.tar.gz --directory=/home/ingmar/.adobe/Flash_Player/AssetCache .
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --directory=/home/ingmar/.adobe/Flash_Player/AssetCache/PDRPWJHY .
Det här leder till att 000002.tar.gz innehåller allt som också finns i 00003.tar.gz, 00004.tar.gz och 00005.tar.gz
En massa saker arkiveras alltså flera gånger om.
Jag skulle väldigt gärna använda TAR, men det fungerar ju då inte heller fullständigt. Jag har provkört med följande lilla script:
# !/bin/sh
# This is a generic script head
tar -zcvpf /media/IOMEGA_HDD/tar_home/000001.tar.gz --no-recursion --directory=/home/<username>/ *
tar -zcvpf /media/IOMEGA_HDD/tar_home/000002.tar.gz --no-recursion --directory=/home/<username>/.adobe/ *
tar -zcvpf /media/IOMEGA_HDD/tar_home/000003.tar.gz --no-recursion --directory=/home/<username>/.adobe/Flash_Player/ *
tar -zcvpf /media/IOMEGA_HDD/tar_home/000004.tar.gz --no-recursion --directory=/home/<username>/.adobe/Flash_Player/AssetCache/ *
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion --directory=/home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/ *
som heter test.sh och har alla möjliga rättigheter påsatta.
sh test.sh eller sudo sh test.sh har använts. I vardera fallen skapas alla uppräknade .tar.gz men endast 00005.tar.gz har ett innehåll. Alla andra arkiv är tomma, fast det finns filer att arkivera. Och det kommer en myriad av: Funktionen "stat" misslyckades: Filen eller katalogen finns inte.
Du vill liksom inte inte hålla med om att DOS skulle vara bättre än Linux på den här punkten. Så länge som det inte fungerar i Linux, så ....
Men jag får väl återkomma till det här så småningom.
Obelix
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Shell/TAR/RAR hittar inga filer
Det där fungerar inte speciellt bra eftersom --directory flyttar dig till rätt katalog först efter det att skalet har expanderat * till allt i den nuvarande katalogen. Resultatet blir att tar desperat försöker packa ner filer som inte finns.foringmar skrev:Nu skall jag göra samma sak med TAR:
I terminalen:
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion --directory=/home/ingmar/.adobe/Flash_Player/AssetCache/PDRPWJHY *
Det här fungerar inte riktigt bra i terminalen. Jag får en massa felmeddelanden. För varje katalognamn i /home/<username> som t.ex. katalogen xport:
xport: Funktionen "stat" misslyckades: Filen eller katalogen finns inte.
Här använder du . istället för * vilket innebär att skalet i det här fallet aldrig expanderar någonting innan tar kommer in i bilden.foringmar skrev:Det fungerar om man inte använder flaggan --no-recursion. Det följande fungerar i terminalen.
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --directory=/home/ingmar/.adobe/Flash_Player/AssetCache/PDRPWJHY .
Det fungerar som en del av ett script också. Det har jag provat och kunnat konstatera. Men utan --no-recursion??
Re: Shell/TAR/RAR hittar inga filer
Kört i terminalen:
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion --directory=/home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY .
resulterar i ett arkiv vid namn 000005.tar.gz, som inte innehåller några filer alls. I varje fall inte några filer från /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY
Det här betyder att TAR inte kan fås att arkivera filer från en viss given katalog. Eller jo visst, men då måste man först flytta sig till katalogen med t.ex. cd /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY och sedan kunde man köra t.ex. tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion *
Nu har jag provat det där i terminalen. Det fungerar. Men jag vill klara av det där med ett enda kommando på en enda rad, i ett script som kommer att innehålla en rad för varje katalog jag har i home, och det går tydligen inte att genomföra med TAR.
Ok. TAR är därmed ute ur bilden, om inte någon lyckas med konststycket att komma på hur det kan göras.
Teoretiskt sett så kunde man ju tänka sig att man har en lista på alla kataloger i /home/<username>
Scriptet skulle kunna ha följande pseudo-kod:
# !/bin/sh
# This is a generic script head
loop börjar och pågår så länge det finns nya rader i <katalog.lst>
siffra från loop till teckensträng
nyloop börjar
om längden av teckensträng < 6, lägg till en 0 framför
Fortsätt med nyloop tills längden på teckensträng = 6
cd variabel#1 som läses in från en rad i en särskild fil <katalog.lst>
tar -zcvpf tar -zcvpf /media/IOMEGA_HDD/tar_home/<arkivnummer>.tar.gz --no-recursion *
loop slutar
Mina kunskaper i bash scripting räcker inte till för det här.
Det skulle för övrigt underlätta en hel del om det i Linux fanns en möjlighet att läsa in en textsträng från en fil och sätta in en textsträng framför den inlästa eller efter den inlästa samt spara resultatet till en annan fil. Jag känner till omdirigering med < och > men det där med att addera textsträngar, hur går det till? Det finns en hel del små program för sådant här i DOS. Jag har några sådana som jag har sparat från DOS tiden. Finns det motsvarande i Linux?
Eftersom det nu är så svårt med TAR så får jag väl rikta in mig på RAR, som jag tänkte på från början.
rar a /media/IOMEGA_HDD/tar_home/000005 /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/*
RAR klarar av det här i terminalen, så varför inte som en del av ett script? Det går ju i DOS i en batch-fil.
Jag testade lite med RAR kom på en annan konstig sak:
rar a /media/IOMEGA_HDD/tar_home/000001 /home/<username>/*
borde inte ta med några under-kataloger. Men det tar med alla underkataloger. Det borde i princip fungera automatiskt som --no-recursion i TAR, därför att man i RAR för att få med under-kataloger borde ge kommandot som:
rar a -r /media/IOMEGA_HDD/tar_home/000001 /home/<username>/*
Rar's manual säger ju: -r Recurse subdirectories.
Man måste alltså i rar särskilt bestämma sig för att man vill ha med subdirectories. I tar är det precis tvärtom. Där får man med dem automatiskt om man inte stoppar det med --no-recursion.
Vad är det riktigt för logik i Linux, när rätt kommando ger fullständigt fel resultat?
Obelix
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion --directory=/home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY .
resulterar i ett arkiv vid namn 000005.tar.gz, som inte innehåller några filer alls. I varje fall inte några filer från /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY
Det här betyder att TAR inte kan fås att arkivera filer från en viss given katalog. Eller jo visst, men då måste man först flytta sig till katalogen med t.ex. cd /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY och sedan kunde man köra t.ex. tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion *
Nu har jag provat det där i terminalen. Det fungerar. Men jag vill klara av det där med ett enda kommando på en enda rad, i ett script som kommer att innehålla en rad för varje katalog jag har i home, och det går tydligen inte att genomföra med TAR.
Ok. TAR är därmed ute ur bilden, om inte någon lyckas med konststycket att komma på hur det kan göras.
Teoretiskt sett så kunde man ju tänka sig att man har en lista på alla kataloger i /home/<username>
Scriptet skulle kunna ha följande pseudo-kod:
# !/bin/sh
# This is a generic script head
loop börjar och pågår så länge det finns nya rader i <katalog.lst>
siffra från loop till teckensträng
nyloop börjar
om längden av teckensträng < 6, lägg till en 0 framför
Fortsätt med nyloop tills längden på teckensträng = 6
cd variabel#1 som läses in från en rad i en särskild fil <katalog.lst>
tar -zcvpf tar -zcvpf /media/IOMEGA_HDD/tar_home/<arkivnummer>.tar.gz --no-recursion *
loop slutar
Mina kunskaper i bash scripting räcker inte till för det här.
Det skulle för övrigt underlätta en hel del om det i Linux fanns en möjlighet att läsa in en textsträng från en fil och sätta in en textsträng framför den inlästa eller efter den inlästa samt spara resultatet till en annan fil. Jag känner till omdirigering med < och > men det där med att addera textsträngar, hur går det till? Det finns en hel del små program för sådant här i DOS. Jag har några sådana som jag har sparat från DOS tiden. Finns det motsvarande i Linux?
Eftersom det nu är så svårt med TAR så får jag väl rikta in mig på RAR, som jag tänkte på från början.
rar a /media/IOMEGA_HDD/tar_home/000005 /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/*
RAR klarar av det här i terminalen, så varför inte som en del av ett script? Det går ju i DOS i en batch-fil.
Jag testade lite med RAR kom på en annan konstig sak:
rar a /media/IOMEGA_HDD/tar_home/000001 /home/<username>/*
borde inte ta med några under-kataloger. Men det tar med alla underkataloger. Det borde i princip fungera automatiskt som --no-recursion i TAR, därför att man i RAR för att få med under-kataloger borde ge kommandot som:
rar a -r /media/IOMEGA_HDD/tar_home/000001 /home/<username>/*
Rar's manual säger ju: -r Recurse subdirectories.
Man måste alltså i rar särskilt bestämma sig för att man vill ha med subdirectories. I tar är det precis tvärtom. Där får man med dem automatiskt om man inte stoppar det med --no-recursion.
Vad är det riktigt för logik i Linux, när rätt kommando ger fullständigt fel resultat?
Obelix
Re: Shell/TAR/RAR hittar inga filer
Skulle nästan rekommendera python till det där istället.
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
ǁ Q: Why is top posting so bad?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Shell/TAR/RAR hittar inga filer
Det finns inget som hindrar dig från att ha cd och tar på samma rad:foringmar skrev:Kört i terminalen:
tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion --directory=/home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY .
resulterar i ett arkiv vid namn 000005.tar.gz, som inte innehåller några filer alls. I varje fall inte några filer från /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY
Det här betyder att TAR inte kan fås att arkivera filer från en viss given katalog. Eller jo visst, men då måste man först flytta sig till katalogen med t.ex. cd /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY och sedan kunde man köra t.ex. tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion *
Nu har jag provat det där i terminalen. Det fungerar. Men jag vill klara av det där med ett enda kommando på en enda rad, i ett script som kommer att innehålla en rad för varje katalog jag har i home, och det går tydligen inte att genomföra med TAR.
Ok. TAR är därmed ute ur bilden, om inte någon lyckas med konststycket att komma på hur det kan göras.
Kod: Markera allt
(cd /home/ingmar/.adobe/Flash_Player/AssetCache/PDRPWJHY && tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion *)
Jag tror inte riktigt jag inser helt vad du egentligen försöker göra. Jag tolkar det som att du vill packa ner filer (men inte underkataloger) som ligger direkt i din hemkatalog i ett numrerat arkiv (000001.tar.gz). Sedan vill du packa ner filerna i varje underkatalog i egna numrerade arkiv (000002.tar.gz, 000003.tar.gz, osv). Och fortsätta på det viset tills alla nivåer av kataloger är nerpackade i helt egna numrerade arkiv?foringmar skrev:Teoretiskt sett så kunde man ju tänka sig att man har en lista på alla kataloger i /home/<username>
Scriptet skulle kunna ha följande pseudo-kod:
# !/bin/sh
# This is a generic script head
loop börjar och pågår så länge det finns nya rader i <katalog.lst>
siffra från loop till teckensträng
nyloop börjar
om längden av teckensträng < 6, lägg till en 0 framför
Fortsätt med nyloop tills längden på teckensträng = 6
cd variabel#1 som läses in från en rad i en särskild fil <katalog.lst>
tar -zcvpf tar -zcvpf /media/IOMEGA_HDD/tar_home/<arkivnummer>.tar.gz --no-recursion *
loop slutar
Men hur har du egentligen tänkt hålla ordning på vilken katalog/underkatalog som varje numrerat arkiv faktiskt hör till? Och vad är det för fel med att packa ner rekursivt?
Att göra om ditt pseudo-skript till ett fungerande skript är egentligen inga problem. Det kan jag fixa på runt 10 minuter, men då måste jag som sagt förstå vad du faktiskt är ute efter.
Det finns ett kommando som heter sed som är väldigt användbart till just sådant.foringmar skrev:Mina kunskaper i bash scripting räcker inte till för det här.
Det skulle för övrigt underlätta en hel del om det i Linux fanns en möjlighet att läsa in en textsträng från en fil och sätta in en textsträng framför den inlästa eller efter den inlästa samt spara resultatet till en annan fil. Jag känner till omdirigering med < och > men det där med att addera textsträngar, hur går det till? Det finns en hel del små program för sådant här i DOS. Jag har några sådana som jag har sparat från DOS tiden. Finns det motsvarande i Linux?
Jag ser inte någon anledning till att det där inte skulle fungera i ett skript. På vilket sätt fungerar det inte?foringmar skrev:Eftersom det nu är så svårt med TAR så får jag väl rikta in mig på RAR, som jag tänkte på från början.
rar a /media/IOMEGA_HDD/tar_home/000005 /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/*
RAR klarar av det här i terminalen, så varför inte som en del av ett script? Det går ju i DOS i en batch-fil.
Problemet här är fortfarande * som du envisas med att använda. Gör så här istället om du nu inte vill ha med några underkataloger:foringmar skrev:Jag testade lite med RAR kom på en annan konstig sak:
rar a /media/IOMEGA_HDD/tar_home/000001 /home/<username>/*
borde inte ta med några under-kataloger. Men det tar med alla underkataloger. Det borde i princip fungera automatiskt som --no-recursion i TAR, därför att man i RAR för att få med under-kataloger borde ge kommandot som:
rar a -r /media/IOMEGA_HDD/tar_home/000001 /home/<username>/*
Rar's manual säger ju: -r Recurse subdirectories.
Man måste alltså i rar särskilt bestämma sig för att man vill ha med subdirectories. I tar är det precis tvärtom. Där får man med dem automatiskt om man inte stoppar det med --no-recursion.
Kod: Markera allt
rar a /media/IOMEGA_HDD/tar_home/000001 /home/ingmar/
Nu är det så att logiken i rar automatiskt använder -r för kataloger som du inte listar med ett / på slutet. Man kan tycka vad man vill om den logiken, men eftersom rar är ett stängt program så är det helt omöjligt att rätta till detta för någon annan än herr Евгений Рошал själv. Sparka på honom, inte på linux.foringmar skrev:Vad är det riktigt för logik i Linux, när rätt kommando ger fullständigt fel resultat?
Re: Shell/TAR/RAR hittar inga filer
Konservburk skriver:
"Jag tror inte riktigt jag inser helt vad du egentligen försöker göra. Jag tolkar det som att du vill packa ner filer (men inte underkataloger) som ligger direkt i din hemkatalog i ett numrerat arkiv (000001.tar.gz). Sedan vill du packa ner filerna i varje underkatalog i egna numrerade arkiv (000002.tar.gz, 000003.tar.gz, osv). Och fortsätta på det viset tills alla nivåer av kataloger är nerpackade i helt egna numrerade arkiv?
Men hur har du egentligen tänkt hålla ordning på vilken katalog/underkatalog som varje numrerat arkiv faktiskt hör till? Och vad är det för fel med att packa ner rekursivt?"
Tack. Jo, det är precis det jag försöker åstadkomma. Och inte bara det, utan att få det gjort automatiskt med vissa tidsmellanrum. Att hålla ordning på vilken katalog som varje numrerat arkiv hör till kommer att vara enkelt. Det kommer alltid att finnas en lista på det i arkivet 000001. Inget fel i och för sig att packa rekursivt, men paket på långt över 4 GB på en vfat yttre hårdskiva? Det går väl inte? Hela min /home är på 14 GB då den är packad.
I själva verket försöker jag implementera något som jag använt under många år i de ålderdomliga operativsystemen med lite olika varianter. När jag skriver dessa rader så har jag provkört ett script som betedde sig synnerligen lovande i Linux. Det fungerar med gratis grejor enbart. Om jag lyckas uppnå att skapa scriptet automatiskt också, så skall jag sedan redogöra i detalj för hur och vad jag gör egentligen.
Jag har provat på SED och jag lyckades inte bli vän med det programmet, även om det såg mycket lovande ut. Men det går kanske att få praktisk hjälp. Jag skulle behöva åstadkomma följande saker med SED:
Jag har omkring 7000 rader i en textfil som alla slutar med ett ":"
Alla dessa radslut borde omvandlas att sluta med "/*", vilket kanske inte är så enkelt i SED, eftersom "*" har en specialbetydelse, om jag förstått rätt vad jag läst om SED.
Efter det här borde var och en av dessa 7000 rader numreras. Det vet jag hur jag gör i Linux, så det behöver jag inte hjälp med. Men sedan.
Jag borde också lyckas sätta in som en början på var och en av dessa 7000 rader följande:
/media/IOMEGA_HDD/tar_home/
Efter det så borde jag ha en följd av rader som börjar så här:
/media/IOMEGA_HDD/tar_home/ 1 ....
/media/IOMEGA_HDD/tar_home/ 2 ....
/media/IOMEGA_HDD/tar_home/ 3 ....
/media/IOMEGA_HDD/tar_home/ 4 ....
osv...
Och så borde jag få de där tomslagen ersatta med "0" med SED. När numreringen stiger minskar antalet tomslag i följd, så det här blir man antagligen tvungen att göra flera gånger om. Först ersätta "/ " med "/00". Sedan kan man ersätta "/00 " med "/000" och så vidare.
"Jag tror inte riktigt jag inser helt vad du egentligen försöker göra. Jag tolkar det som att du vill packa ner filer (men inte underkataloger) som ligger direkt i din hemkatalog i ett numrerat arkiv (000001.tar.gz). Sedan vill du packa ner filerna i varje underkatalog i egna numrerade arkiv (000002.tar.gz, 000003.tar.gz, osv). Och fortsätta på det viset tills alla nivåer av kataloger är nerpackade i helt egna numrerade arkiv?
Men hur har du egentligen tänkt hålla ordning på vilken katalog/underkatalog som varje numrerat arkiv faktiskt hör till? Och vad är det för fel med att packa ner rekursivt?"
Tack. Jo, det är precis det jag försöker åstadkomma. Och inte bara det, utan att få det gjort automatiskt med vissa tidsmellanrum. Att hålla ordning på vilken katalog som varje numrerat arkiv hör till kommer att vara enkelt. Det kommer alltid att finnas en lista på det i arkivet 000001. Inget fel i och för sig att packa rekursivt, men paket på långt över 4 GB på en vfat yttre hårdskiva? Det går väl inte? Hela min /home är på 14 GB då den är packad.
I själva verket försöker jag implementera något som jag använt under många år i de ålderdomliga operativsystemen med lite olika varianter. När jag skriver dessa rader så har jag provkört ett script som betedde sig synnerligen lovande i Linux. Det fungerar med gratis grejor enbart. Om jag lyckas uppnå att skapa scriptet automatiskt också, så skall jag sedan redogöra i detalj för hur och vad jag gör egentligen.
Jag har provat på SED och jag lyckades inte bli vän med det programmet, även om det såg mycket lovande ut. Men det går kanske att få praktisk hjälp. Jag skulle behöva åstadkomma följande saker med SED:
Jag har omkring 7000 rader i en textfil som alla slutar med ett ":"
Alla dessa radslut borde omvandlas att sluta med "/*", vilket kanske inte är så enkelt i SED, eftersom "*" har en specialbetydelse, om jag förstått rätt vad jag läst om SED.
Efter det här borde var och en av dessa 7000 rader numreras. Det vet jag hur jag gör i Linux, så det behöver jag inte hjälp med. Men sedan.
Jag borde också lyckas sätta in som en början på var och en av dessa 7000 rader följande:
/media/IOMEGA_HDD/tar_home/
Efter det så borde jag ha en följd av rader som börjar så här:
/media/IOMEGA_HDD/tar_home/ 1 ....
/media/IOMEGA_HDD/tar_home/ 2 ....
/media/IOMEGA_HDD/tar_home/ 3 ....
/media/IOMEGA_HDD/tar_home/ 4 ....
osv...
Och så borde jag få de där tomslagen ersatta med "0" med SED. När numreringen stiger minskar antalet tomslag i följd, så det här blir man antagligen tvungen att göra flera gånger om. Först ersätta "/ " med "/00". Sedan kan man ersätta "/00 " med "/000" och så vidare.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Shell/TAR/RAR hittar inga filer
Nej, det går ju inte att ha alltför stora filer på vfat. Men du kan dela upp arkivet i flera mindre delar:foringmar skrev:Tack. Jo, det är precis det jag försöker åstadkomma. Och inte bara det, utan att få det gjort automatiskt med vissa tidsmellanrum. Att hålla ordning på vilken katalog som varje numrerat arkiv hör till kommer att vara enkelt. Det kommer alltid att finnas en lista på det i arkivet 000001. Inget fel i och för sig att packa rekursivt, men paket på långt över 4 GB på en vfat yttre hårdskiva? Det går väl inte? Hela min /home är på 14 GB då den är packad.
Kod: Markera allt
tar -pzcC ~ . | split -da6 -b50000000 - /media/IOMEGA_HDD/tar_home/namn.tar.gz.
Kod: Markera allt
cat /media/IOMEGA_HDD/tar_home/namn.tar.gz.* | tar -zxC ~
Kod: Markera allt
#!/bin/bash
cd
unset NUM
find -type d -print0 |
while ((NUM++))
read -d '' DIR
do (
NUM=$(printf "%06.f" $NUM)
find "$DIR" -maxdepth 1 -not -type d -print0 |
xargs -0 tar -rpf "/media/IOMEGA_HDD/tar_home/$NUM.tar"
gzip -9 "/media/IOMEGA_HDD/tar_home/$NUM.tar"
) done
Kod: Markera allt
cat /media/IOMEGA_HDD/tar_home/*.tar.gz | tar -zxC ~
Med skillnaden att det nu även går att packa upp varje fil för sig:
Kod: Markera allt
cat /media/IOMEGA_HDD/tar_home/000001.tar.gz | tar -zxC ~
Det där låter spännandeforingmar skrev:I själva verket försöker jag implementera något som jag använt under många år i de ålderdomliga operativsystemen med lite olika varianter. När jag skriver dessa rader så har jag provkört ett script som betedde sig synnerligen lovande i Linux. Det fungerar med gratis grejor enbart. Om jag lyckas uppnå att skapa scriptet automatiskt också, så skall jag sedan redogöra i detalj för hur och vad jag gör egentligen.

Jo, det stämmer bra att * är speciell för sed, men det kommer man runt genom att skriva \* istället:foringmar skrev:Jag har provat på SED och jag lyckades inte bli vän med det programmet, även om det såg mycket lovande ut. Men det går kanske att få praktisk hjälp. Jag skulle behöva åstadkomma följande saker med SED:
Jag har omkring 7000 rader i en textfil som alla slutar med ett ":"
Alla dessa radslut borde omvandlas att sluta med "/*", vilket kanske inte är så enkelt i SED, eftersom "*" har en specialbetydelse, om jag förstått rätt vad jag läst om SED.
Kod: Markera allt
sed -i 's,:$,/\*,' filen_som_ska_fixas
Du gör i prinsip samma sak igen, fast i början av raderna istället (^ för början, $ för slutet):foringmar skrev:Jag borde också lyckas sätta in som en början på var och en av dessa 7000 rader följande:
/media/IOMEGA_HDD/tar_home/
Kod: Markera allt
sed -i 's,^,/media/IOMEGA_HDD/tar_home/,' filen_som_ska_fixas
Det där går att göra på flera sätt, men om vi utgår från din idé så blir det så här:foringmar skrev:Efter det så borde jag ha en följd av rader som börjar så här:
/media/IOMEGA_HDD/tar_home/ 1 ....
/media/IOMEGA_HDD/tar_home/ 2 ....
/media/IOMEGA_HDD/tar_home/ 3 ....
/media/IOMEGA_HDD/tar_home/ 4 ....
osv...
Och så borde jag få de där tomslagen ersatta med "0" med SED. När numreringen stiger minskar antalet tomslag i följd, så det här blir man antagligen tvungen att göra flera gånger om. Först ersätta "/ " med "/00". Sedan kan man ersätta "/00 " med "/000" och så vidare.
Kod: Markera allt
sed -i ':;s,\(/0*\)\s,\10,;t' filen_som_ska_fixas
Nu har jag vind i seglen. Åt rätt håll!
Skriptet:
#!/bin/bash
cd
unset NUM
find -type d -print0 |
while ((NUM++))
read -d '' DIR
do (
NUM=$(printf "%06.f" $NUM)
find "$DIR" -maxdepth 1 -not -type d -print0 |
xargs -0 tar -rpf "/media/IOMEGA_HDD/tar_home/$NUM.tar"
gzip -9 "/media/IOMEGA_HDD/tar_home/$NUM.tar"
) done
som jag sparade i /home/<username> och gav namnet test.sh gav följande felmeddelanden:
test.sh: 12: NUM++: Not found
read: 12: Illegal operation -d
vid provkörning. Skapas ingen lista på arkivnamn <--> katalog heller. Jag återkommer till det i mitt följande inlägg.
Det här torde inte ha med rättigheter för filen test.sh att göra. Men skriptet gav mig ett tips på hur jag får en lista på alla kataloger på ett enklare sätt än vad jag hade tänkt mig. Jag hade tänkt använda ls och grep, men nu får jag en lista på alla kataloger under /home/<username> med
find -type d -fprint dir00.txt
Resultatet såg riktigt bra ut. Radslutet var emellertid inte : men det torde inte vara något problem, tror jag. (Det visade sig att det var det inte heller)
find / -type d -fprint dir00.txt
Det skulle ge en lista på samtliga kataloger i hela mitt filsystem. Gav en lång rad med meddelanden om att "Åtkomst nekas" också. Hmm. Jag provar:
sudo find / -type d -fprint dir00.txt
Jo, det gick bra. Mjaaha? Det här då:
find /home/<username>/ -type d -fprint dir00.txt
Endast en katalog som gav "Åtkomst nekad". Det behöver tydligen sudo det också. Så här blir det i ett script:
echo "password" | sudo -S find /home/<username> -type d -fprint dir00.txt
Nu har jag suttit och skapat script och provkört delar av det. I omkring 4 timmar. Det är inte färdigt än. Men nu har jag vind i seglen så att säga. Det går framåt. Jag återkommer.
#!/bin/bash
cd
unset NUM
find -type d -print0 |
while ((NUM++))
read -d '' DIR
do (
NUM=$(printf "%06.f" $NUM)
find "$DIR" -maxdepth 1 -not -type d -print0 |
xargs -0 tar -rpf "/media/IOMEGA_HDD/tar_home/$NUM.tar"
gzip -9 "/media/IOMEGA_HDD/tar_home/$NUM.tar"
) done
som jag sparade i /home/<username> och gav namnet test.sh gav följande felmeddelanden:
test.sh: 12: NUM++: Not found
read: 12: Illegal operation -d
vid provkörning. Skapas ingen lista på arkivnamn <--> katalog heller. Jag återkommer till det i mitt följande inlägg.
Det här torde inte ha med rättigheter för filen test.sh att göra. Men skriptet gav mig ett tips på hur jag får en lista på alla kataloger på ett enklare sätt än vad jag hade tänkt mig. Jag hade tänkt använda ls och grep, men nu får jag en lista på alla kataloger under /home/<username> med
find -type d -fprint dir00.txt
Resultatet såg riktigt bra ut. Radslutet var emellertid inte : men det torde inte vara något problem, tror jag. (Det visade sig att det var det inte heller)
find / -type d -fprint dir00.txt
Det skulle ge en lista på samtliga kataloger i hela mitt filsystem. Gav en lång rad med meddelanden om att "Åtkomst nekas" också. Hmm. Jag provar:
sudo find / -type d -fprint dir00.txt
Jo, det gick bra. Mjaaha? Det här då:
find /home/<username>/ -type d -fprint dir00.txt
Endast en katalog som gav "Åtkomst nekad". Det behöver tydligen sudo det också. Så här blir det i ett script:
echo "password" | sudo -S find /home/<username> -type d -fprint dir00.txt
Nu har jag suttit och skapat script och provkört delar av det. I omkring 4 timmar. Det är inte färdigt än. Men nu har jag vind i seglen så att säga. Det går framåt. Jag återkommer.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Nu har jag vind i seglen. Åt rätt håll!
Det är för att du försöker köra skriptet med sh istället för med bash, dvs du måste köra skriptet med:foringmar skrev:Skriptet:
#!/bin/bash
cd
unset NUM
find -type d -print0 |
while ((NUM++))
read -d '' DIR
do (
NUM=$(printf "%06.f" $NUM)
find "$DIR" -maxdepth 1 -not -type d -print0 |
xargs -0 tar -rpf "/media/IOMEGA_HDD/tar_home/$NUM.tar"
gzip -9 "/media/IOMEGA_HDD/tar_home/$NUM.tar"
) done
som jag sparade i /home/<username> och gav namnet test.sh gav följande felmeddelanden:
test.sh: 12: NUM++: Not found
read: 12: Illegal operation -d
bash ~/test.sh eller göra det körbart med chmod +x ~/test.sh och sedan köra det med ~/test.sh
Jag hade såklart kunnat göra skriptet helt sh-kompatibelt, men då hade det blivit betydligt svårare att få det att fungera bra ihop med konstiga filnamn, dvs filnamn med mellanrum och annat skräp i.
En möjlig lösning! Ett sätt att göra backup.
OK! Nu har jag skapat ett script som gör ett annat script som gör en säkerhetskopia av den del av /home som jag vill arkivera.
Det blir en numrerad arkivfil för varje katalog och underkatalog i /home/<username>/
Scriptet ser just nu ut så här:
-------------
# !/bin/sh
# This is a generic script head
# Det här skapar en lista på kataloger som skall packas
cat mycket_hemliga_filen | sudo -S find /home/<username> -type d -fprint /home/<username>/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod u+rwx /home/<username>/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod g+rwx /home/<username>/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod o+rwx /home/<username>/dir00.txt
# Filtrerar bort katalogen /home/<username>/Clipart/
# Det finns en kopia på de filerna på annat håll
grep -vi /home/<username>/Clipart/ /home/<username>/dir00.txt > /home/<username>/dir01.txt
# Sorterar listan
sort /home/<username>/dir01.txt > /home/<username>/dir00.txt
# Ändrar mellanslag till jokrar
sed -i 's/\s/?/g' /home/<username>/dir00.txt
# Tänkte också ändra åäöÅÄÖ till ? men det visade sig inte fungera. Förstår inte varför.
#
# Ändrar vissa specialtecken till ?
sed -i 's/{/?/g' /home/<username>/dir00.txt
sed -i 's/}/?/g' /home/<username>/dir00.txt
sed -i 's/(/?/g' /home/<username>/dir00.txt
sed -i 's/)/?/g' /home/<username>/dir00.txt
# Skapar numrering
cat -n /home/<username>/dir00.txt > /home/<username>/dir01.txt
# Och så radens början:
sed -i 's,^,/media/IOMEGA_HDD/tar_home/pck,' /home/<username>/dir01.txt
sed -i 's,^,zip -1 -u ,' /home/<username>/dir01.txt
sed -i 's,^,cat mycket_hemliga_filen \| sudo -S ,' /home/<username>/dir01.txt
# En viss tillhuggning
sed -i 's/tar_home\/pck /tar_home\/pck0/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck0 /tar_home\/pck00/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck00 /tar_home\/pck000/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck000 /tar_home\/pck0000/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck0000 /tar_home\/pck00000/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck00000 /tar_home\/pck000000/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck/tar_home\/a_/g' /home/<username>/dir01.txt
#
# Radslut för ZIP
# Andra packningsprogram kan kräva annat radslut
sed -i 's,$,/\*,' /home/<username>/dir01.txt
# Återstår att sätta in scripthuvud
cat /home/<username>/bckpscripts/script_head.txt /home/<username>/dir01.txt > /home/<username>/z0bckup.sh
cat mycket_hemliga_filen | sudo -S chmod u+rwx /home/<username>/z0bckup.sh
cat mycket_hemliga_filen | sudo -S chmod g+rwx /home/<username>/z0bckup.sh
cat mycket_hemliga_filen | sudo -S chmod o+rwx /home/<username>/z0bckup.sh
-------------
Det här scriptet får nu fritt användas och modifieras av vem som helst.
Jag använder ZIP som packare. Det är gratis. Scriptet som gör paketen heter z0bckup.sh och lagras i /home/<username>/
Det utgör samtidigt en lista på vilken katalog/underkatalog som hör till vilket arkiv. I och med det så vet man också att listan på vilket arkiv som svarar för innehållet i en viss katalog alltid lagras i paket nr 00001. Behöver man den så vet man var man skall plocka fram den.
Den mycket_hemliga_filen innehåller lösenordet för sudo. Jag har dessutom kört chmod 400 mycket_hemliga_filen
Utan det här så hade jag haft echo "<lösenordet>" som början på nästan varje rad i z0bckup.sh. Det hade varit maximalt osäkert, med tanke på att den filen är/var öppen för vem som helst.
Nu vet jag inte om ZIP sparar filtillstånd (permissions) så som tar gör. Men ZIP har nu vissa andra fördelar, som t.ex. ordningen för parametrarna som styr packningsprocessen. Det är lättare att skapa ett backup-script med zip än med tar. När man återställer så skapas katalogerna automatiskt. Jag vet inte om jag har missförstått saken, men jag har tyckt mig förstå att det här med att återskapa kataloger från ett tar-paket, inte alltid är så enkelt.
z0bckup.sh ser ut ungefär så här:
-------
# !/bin/sh
# This is a generic script head
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000001 /home/<username>/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000002 /home/<username>/.adobe/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000003 /home/<username>/.adobe/Flash_Player/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000004 /home/<username>/.adobe/Flash_Player/AssetCache/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000005 /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000006 /home/<username>/Audio/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000007 /home/<username>/Audio/imsi/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000008 /home/<username>/Audio/imsi/moresnds/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000009 /home/<username>/Audio/imsi/moresnds/8bit/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000010 /home/<username>/Audio/imsi/moresnds/8bit/animals/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000011 /home/<username>/Audio/imsi/moresnds/8bit/animals/birds/*
...
-----------
Det långa mellanrummet mellan arkivnamnet (ZIP lägger automatiskt till filändelsen zip) beror på att där finns ett tabulatortecken. Hur det hamnat där begriper jag inte, men jag tänker att det är en smula onödigt att ta problem för det här. Det kunde vara ett mellanrum i stället, men eftersom scriptet fungerar som det ska, så är det här närmast en skönhetsfel.
Och nu är jag öppen för kommentarer och förbättringsförslag. Det här kunde egentligen bli en helt ny tråd numera. Men det får områdets moderator avgöra och utföra enligt förgottfinnande.
Ett varmt tack till Kakburken och några andra som gjorde det här möjligt.
Med vänlig hälsning
obelix
Det blir en numrerad arkivfil för varje katalog och underkatalog i /home/<username>/
Scriptet ser just nu ut så här:
-------------
# !/bin/sh
# This is a generic script head
# Det här skapar en lista på kataloger som skall packas
cat mycket_hemliga_filen | sudo -S find /home/<username> -type d -fprint /home/<username>/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod u+rwx /home/<username>/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod g+rwx /home/<username>/dir00.txt
cat mycket_hemliga_filen | sudo -S chmod o+rwx /home/<username>/dir00.txt
# Filtrerar bort katalogen /home/<username>/Clipart/
# Det finns en kopia på de filerna på annat håll
grep -vi /home/<username>/Clipart/ /home/<username>/dir00.txt > /home/<username>/dir01.txt
# Sorterar listan
sort /home/<username>/dir01.txt > /home/<username>/dir00.txt
# Ändrar mellanslag till jokrar
sed -i 's/\s/?/g' /home/<username>/dir00.txt
# Tänkte också ändra åäöÅÄÖ till ? men det visade sig inte fungera. Förstår inte varför.
#
# Ändrar vissa specialtecken till ?
sed -i 's/{/?/g' /home/<username>/dir00.txt
sed -i 's/}/?/g' /home/<username>/dir00.txt
sed -i 's/(/?/g' /home/<username>/dir00.txt
sed -i 's/)/?/g' /home/<username>/dir00.txt
# Skapar numrering
cat -n /home/<username>/dir00.txt > /home/<username>/dir01.txt
# Och så radens början:
sed -i 's,^,/media/IOMEGA_HDD/tar_home/pck,' /home/<username>/dir01.txt
sed -i 's,^,zip -1 -u ,' /home/<username>/dir01.txt
sed -i 's,^,cat mycket_hemliga_filen \| sudo -S ,' /home/<username>/dir01.txt
# En viss tillhuggning
sed -i 's/tar_home\/pck /tar_home\/pck0/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck0 /tar_home\/pck00/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck00 /tar_home\/pck000/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck000 /tar_home\/pck0000/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck0000 /tar_home\/pck00000/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck00000 /tar_home\/pck000000/g' /home/<username>/dir01.txt
sed -i 's/tar_home\/pck/tar_home\/a_/g' /home/<username>/dir01.txt
#
# Radslut för ZIP
# Andra packningsprogram kan kräva annat radslut
sed -i 's,$,/\*,' /home/<username>/dir01.txt
# Återstår att sätta in scripthuvud
cat /home/<username>/bckpscripts/script_head.txt /home/<username>/dir01.txt > /home/<username>/z0bckup.sh
cat mycket_hemliga_filen | sudo -S chmod u+rwx /home/<username>/z0bckup.sh
cat mycket_hemliga_filen | sudo -S chmod g+rwx /home/<username>/z0bckup.sh
cat mycket_hemliga_filen | sudo -S chmod o+rwx /home/<username>/z0bckup.sh
-------------
Det här scriptet får nu fritt användas och modifieras av vem som helst.
Jag använder ZIP som packare. Det är gratis. Scriptet som gör paketen heter z0bckup.sh och lagras i /home/<username>/
Det utgör samtidigt en lista på vilken katalog/underkatalog som hör till vilket arkiv. I och med det så vet man också att listan på vilket arkiv som svarar för innehållet i en viss katalog alltid lagras i paket nr 00001. Behöver man den så vet man var man skall plocka fram den.
Den mycket_hemliga_filen innehåller lösenordet för sudo. Jag har dessutom kört chmod 400 mycket_hemliga_filen
Utan det här så hade jag haft echo "<lösenordet>" som början på nästan varje rad i z0bckup.sh. Det hade varit maximalt osäkert, med tanke på att den filen är/var öppen för vem som helst.
Nu vet jag inte om ZIP sparar filtillstånd (permissions) så som tar gör. Men ZIP har nu vissa andra fördelar, som t.ex. ordningen för parametrarna som styr packningsprocessen. Det är lättare att skapa ett backup-script med zip än med tar. När man återställer så skapas katalogerna automatiskt. Jag vet inte om jag har missförstått saken, men jag har tyckt mig förstå att det här med att återskapa kataloger från ett tar-paket, inte alltid är så enkelt.
z0bckup.sh ser ut ungefär så här:
-------
# !/bin/sh
# This is a generic script head
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000001 /home/<username>/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000002 /home/<username>/.adobe/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000003 /home/<username>/.adobe/Flash_Player/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000004 /home/<username>/.adobe/Flash_Player/AssetCache/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000005 /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000006 /home/<username>/Audio/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000007 /home/<username>/Audio/imsi/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000008 /home/<username>/Audio/imsi/moresnds/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000009 /home/<username>/Audio/imsi/moresnds/8bit/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000010 /home/<username>/Audio/imsi/moresnds/8bit/animals/*
cat mycket_hemliga_filen | sudo -S zip -1 -u /media/IOMEGA_HDD/tar_home/a_000011 /home/<username>/Audio/imsi/moresnds/8bit/animals/birds/*
...
-----------
Det långa mellanrummet mellan arkivnamnet (ZIP lägger automatiskt till filändelsen zip) beror på att där finns ett tabulatortecken. Hur det hamnat där begriper jag inte, men jag tänker att det är en smula onödigt att ta problem för det här. Det kunde vara ett mellanrum i stället, men eftersom scriptet fungerar som det ska, så är det här närmast en skönhetsfel.
Och nu är jag öppen för kommentarer och förbättringsförslag. Det här kunde egentligen bli en helt ny tråd numera. Men det får områdets moderator avgöra och utföra enligt förgottfinnande.
Ett varmt tack till Kakburken och några andra som gjorde det här möjligt.
Med vänlig hälsning
obelix
Samma med TAR?
Följande rad är från ett tidigare inlägg i den här diskussionen.
(cd /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY && tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion *)
Och nu har jag blivit girig eller vad man nu skall kalla det. Jag skulle vilja åstadkomma ett likadant script som för zip men med rader som såg ut så här:
(cd /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY && cat mycket_hemliga_filen | sudo - S tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion *)
Första problemet som sticker i ögat är förstås numret på arkivet. Numrerar man med CAT så blir ju numret längst till vänster på raden.
Möjlig lösning: Man skär ut de kolumner i filen som omfattar radnumret och sparar dem till en skild fil FIL2. FIL1 får innehålla det som blir kvar.
(Hur ser CUT kommandot ut då?) Sedan klistrar man ihop första raden från FIL1 med första raden från FIL2, andra raden, tredje raden, och så vidare och fortsätter tills alla rader är sammanfogade. Resultatet sparas i FIL3.
Jag känner till ett program i DOS som klarar av att klistra ihop rader från två olika filer på det här sättet. Jag skulle kunna temporärt hoppa till dosemu och göra det hela manuellt, men jag vill inte. Det blir så tungrott det. Jag vet inte hur man skulle åstadkomma något motsvarande i Linux. Vet någon?
(cd /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY && tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion *)
Och nu har jag blivit girig eller vad man nu skall kalla det. Jag skulle vilja åstadkomma ett likadant script som för zip men med rader som såg ut så här:
(cd /home/<username>/.adobe/Flash_Player/AssetCache/PDRPWJHY && cat mycket_hemliga_filen | sudo - S tar -zcvpf /media/IOMEGA_HDD/tar_home/000005.tar.gz --no-recursion *)
Första problemet som sticker i ögat är förstås numret på arkivet. Numrerar man med CAT så blir ju numret längst till vänster på raden.
Möjlig lösning: Man skär ut de kolumner i filen som omfattar radnumret och sparar dem till en skild fil FIL2. FIL1 får innehålla det som blir kvar.
(Hur ser CUT kommandot ut då?) Sedan klistrar man ihop första raden från FIL1 med första raden från FIL2, andra raden, tredje raden, och så vidare och fortsätter tills alla rader är sammanfogade. Resultatet sparas i FIL3.
Jag känner till ett program i DOS som klarar av att klistra ihop rader från två olika filer på det här sättet. Jag skulle kunna temporärt hoppa till dosemu och göra det hela manuellt, men jag vill inte. Det blir så tungrott det. Jag vet inte hur man skulle åstadkomma något motsvarande i Linux. Vet någon?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Shell/TAR/RAR hittar inga filer (Har blivit en backup-metod)
Kommandon för att klippa och klistra kollumnvis är cut och paste.
Exempelvis:
Detta ger själva numreringen i filen numrering.txt, resten ligger kvar i filen.txt.
Filen ihopklistrad.txt består nu av det som finns i filen.txt följt av numreringen från numrering.txt.
Exempelvis:
Kod: Markera allt
cat -n filen.txt | cut -f1 >numrering.txt
Kod: Markera allt
paste filen.txt numrering.txt >ihopklistrat.txt
Ett litet delproblem
På Windows 95 -tiden så stiftade jag bekantskap med ett backup-program som hette grback. Det skapade en kopia av innehållet i varje underkatalog på en hårdskiva i form av en zip-fil på en annan hårdskiva. Samtidigt skapades en kopia av katalogstrukturen från den första hårdskivan till den andra hårdskivan.
Nu har jag i princip åstadkommit en motsvarighet med tar till den backup-metod jag implementerade med zip. Men jag är inte riktigt nöjd med det ännu. Att återställa från det som nu produceras skulle bli tämligen bökigt. Jag vill ha det lättare.
Jag har kontrollerat om zip bevarar file permissions, dvs. det som tar gör med -p flaggan. Det har visat sig att zip gör det, vilket underlättar då man skall återställa säkerhetskopian.
zip sparar den s.k. sökvägen till de arkiverade filerna i zip-paketet. Det gör inte tar, så jag tänkte att jag skulle implementera samma ide som i grback, dvs. skapa en kopia av katalogstrukturen på ett annat ställe, där varje katalog sedan innehöll en backup.tar.gz fil med kopia av filerna i den ursprungliga katalogen. Och nu har jag ett litet problem med det här.
Jag utgick från att man skapar tar.gz. arkivet i den ursprungliga katalogen och sedan flyttar den till en annan hårdskiva. Och det var här jag körde fast. Det ser ut som om det inte går att ge ett cp- eller mv-kommando så att man endast plockar med sig en viss namngiven fil i en valfri katalog. Endast fullständiga kataloger med hela dess innehåll.
cp -urv /home/<username>/*.zip /media/IOMEGA_HDD/home
går inte för sig. Katalogerna under /home<username>/ lämnas obeaktade. mv ser inte ut att ha någon -r parameter överhuvudtaget. Det går ju förstås att skapa ett skript som gör det här, men jag skulle vilja åstadkomma det här med ett enda kommando.
Hur göra?
Ett alternativ skulle ju vara enligt följande pseudokod:
1) skapa den nya katalogen på hdd2 < katalognamn från lista.txt
2) På hdd1: cd < katalognamn från lista.txt
3) tar -zcvpf backup.tar.gz --no-recursion *
4) flytta backup.tar.gz från katalogen på hdd1 till motsvarande katalog på hdd2
men det blir nog ganska bökigt att göra det på det sättet. Man borde då ha ett skript som läser in en (1) parameter från en lista. Parametern är det aktuella katalognamnet. Eller så strävar man till följande:
<kommando 1> && <kommando 2> && <kommando 3> && <kommando 4>
Det är redan enklare, men det finns visst någon slags begränsning på hur lång en dylik kommandorad får vara. Jag har för mig att det finns en stor risk för att den begränsingen kommer emot om man gör såhär. För att kringgå detta så kunde man ju först skapa en fil med raderna:
<kommando 1> && <kommando 2> && <kommando 3> && <kommando 4>
Och efter det på något sätt låta sed skapa följande fyra rader
<kommando 1>
<kommando 2>
<kommando 3>
<kommando 4>
för varje rad med
<kommando 1> && <kommando 2> && <kommando 3> && <kommando 4>
Skulle det vara möjligt med sed?
Medan jag skrev det här så fick jag en ide, som jag skall pröva per omgående.
Nu har jag i princip åstadkommit en motsvarighet med tar till den backup-metod jag implementerade med zip. Men jag är inte riktigt nöjd med det ännu. Att återställa från det som nu produceras skulle bli tämligen bökigt. Jag vill ha det lättare.
Jag har kontrollerat om zip bevarar file permissions, dvs. det som tar gör med -p flaggan. Det har visat sig att zip gör det, vilket underlättar då man skall återställa säkerhetskopian.
zip sparar den s.k. sökvägen till de arkiverade filerna i zip-paketet. Det gör inte tar, så jag tänkte att jag skulle implementera samma ide som i grback, dvs. skapa en kopia av katalogstrukturen på ett annat ställe, där varje katalog sedan innehöll en backup.tar.gz fil med kopia av filerna i den ursprungliga katalogen. Och nu har jag ett litet problem med det här.
Jag utgick från att man skapar tar.gz. arkivet i den ursprungliga katalogen och sedan flyttar den till en annan hårdskiva. Och det var här jag körde fast. Det ser ut som om det inte går att ge ett cp- eller mv-kommando så att man endast plockar med sig en viss namngiven fil i en valfri katalog. Endast fullständiga kataloger med hela dess innehåll.
cp -urv /home/<username>/*.zip /media/IOMEGA_HDD/home
går inte för sig. Katalogerna under /home<username>/ lämnas obeaktade. mv ser inte ut att ha någon -r parameter överhuvudtaget. Det går ju förstås att skapa ett skript som gör det här, men jag skulle vilja åstadkomma det här med ett enda kommando.
Hur göra?
Ett alternativ skulle ju vara enligt följande pseudokod:
1) skapa den nya katalogen på hdd2 < katalognamn från lista.txt
2) På hdd1: cd < katalognamn från lista.txt
3) tar -zcvpf backup.tar.gz --no-recursion *
4) flytta backup.tar.gz från katalogen på hdd1 till motsvarande katalog på hdd2
men det blir nog ganska bökigt att göra det på det sättet. Man borde då ha ett skript som läser in en (1) parameter från en lista. Parametern är det aktuella katalognamnet. Eller så strävar man till följande:
<kommando 1> && <kommando 2> && <kommando 3> && <kommando 4>
Det är redan enklare, men det finns visst någon slags begränsning på hur lång en dylik kommandorad får vara. Jag har för mig att det finns en stor risk för att den begränsingen kommer emot om man gör såhär. För att kringgå detta så kunde man ju först skapa en fil med raderna:
<kommando 1> && <kommando 2> && <kommando 3> && <kommando 4>
Och efter det på något sätt låta sed skapa följande fyra rader
<kommando 1>
<kommando 2>
<kommando 3>
<kommando 4>
för varje rad med
<kommando 1> && <kommando 2> && <kommando 3> && <kommando 4>
Skulle det vara möjligt med sed?
Medan jag skrev det här så fick jag en ide, som jag skall pröva per omgående.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Ett litet delproblem
Det beror på hur du packar ner med tar. Du kan få med sökvägen om du vill. Så fungerar det t.ex. med det skriptet jag postade några inlägg upp (det du inte lyckades köra för att du använde sh istället för bash).foringmar skrev:zip sparar den s.k. sökvägen till de arkiverade filerna i zip-paketet. Det gör inte tar
Här är skriptet igen, omgjort så att det även klarar sh (med nackdelen att det inte längre kan hantera katalognamn som innehåller nyrader):
Kod: Markera allt
#!/bin/sh
cd
unset NUM
find -type d |
while NUM=`expr $NUM + 1`
read DIR
do (
NUM=`printf "%06.f" $NUM`
find "$DIR" -maxdepth 1 -not -type d -print0 |
xargs -0 tar -rpf "/media/IOMEGA_HDD/tar_home/$NUM.tar"
gzip -9 "/media/IOMEGA_HDD/tar_home/$NUM.tar"
) done
Problemet är åter igen hur du använder * i dina kommandon. Ta t.ex. /home/<username>/*.zip som kommer att expandera till alla .zip-filer som ligger direkt i /home/<username>/ innan cp -r hinner få så mycket som en syl i vädret.foringmar skrev:Jag utgick från att man skapar tar.gz. arkivet i den ursprungliga katalogen och sedan flyttar den till en annan hårdskiva. Och det var här jag körde fast. Det ser ut som om det inte går att ge ett cp- eller mv-kommando så att man endast plockar med sig en viss namngiven fil i en valfri katalog. Endast fullständiga kataloger med hela dess innehåll.
cp -urv /home/<username>/*.zip /media/IOMEGA_HDD/home
går inte för sig. Katalogerna under /home<username>/ lämnas obeaktade. mv ser inte ut att ha någon -r parameter överhuvudtaget. Det går ju förstås att skapa ett skript som gör det här, men jag skulle vilja åstadkomma det här med ett enda kommando.
Du vill egentligen gör så här:
Kod: Markera allt
find ~ -iname '*.zip' -exec cp -uv {} /media/IOMEGA_HDD/home \;
Så här kanske:foringmar skrev:Eller så strävar man till följande:
<kommando 1> && <kommando 2> && <kommando 3> && <kommando 4>
Det är redan enklare, men det finns visst någon slags begränsning på hur lång en dylik kommandorad får vara. Jag har för mig att det finns en stor risk för att den begränsingen kommer emot om man gör såhär. För att kringgå detta så kunde man ju först skapa en fil med raderna:
<kommando 1> && <kommando 2> && <kommando 3> && <kommando 4>
Och efter det på något sätt låta sed skapa följande fyra rader
<kommando 1>
<kommando 2>
<kommando 3>
<kommando 4>
för varje rad med
<kommando 1> && <kommando 2> && <kommando 3> && <kommando 4>
Skulle det vara möjligt med sed?
Kod: Markera allt
sed -i 's/\s*&&\s*/\n/g' filen.txt
Delproblemet
Det är nu alldeles klart och tydligt att mitt sätt att tänka på kommandon fortfarande sitter hårt fast i det gamla operativsystemets sätt att se på saker och ting. Det kommer nog att ta en del tid innan jag lär mig att tänka Linux, men det var nu likadant när jag bytte från CP/M till DOS en gång i tiden. Fast då var förändringarna inte riktigt så omfattande som det tydligen är i fråga om DOS --> Linux. Men bara jag håller på och får lite hjälp på vägen så kommer nog mitt tänkande på räls eller rätt kurs igen.
Det där ser väldigt intressant ut. Jag måste anpassa det hela en smula, och provköra. Jag återkommer efter det.
Det där ser väldigt intressant ut. Jag måste anpassa det hela en smula, och provköra. Jag återkommer efter det.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Delproblemet
Jag kan tänka mig att det inte är helt lätt om man är van vid DOS. Själv har jag aldrig använt DOS mer än möjligtvis för att starta något spel, så jag kan inte direkt relatera till exakt vad i en övergång som är mest problematiskt.foringmar skrev:Det är nu alldeles klart och tydligt att mitt sätt att tänka på kommandon fortfarande sitter hårt fast i det gamla operativsystemets sätt att se på saker och ting.
Det här handlar egentligen inte om linux alls. Hur man tänker och använder kommandon är snarare ett arv från unix. I princip såg det hela likadant ut och fungerade på samma sätt redan innan DOS ens var påtänkt.foringmar skrev:Det kommer nog att ta en del tid innan jag lär mig att tänka Linux, men det var nu likadant när jag bytte från CP/M till DOS en gång i tiden. Fast då var förändringarna inte riktigt så omfattande som det tydligen är i fråga om DOS --> Linux. Men bara jag håller på och får lite hjälp på vägen så kommer nog mitt tänkande på räls eller rätt kurs igen.
Just * har t.ex. fungerat på samma sätt sedan åtminstone 1979. Men eftersom DOS fungerar annorlunda så blir ju såklart unix-sättet att tänka väldigt förvirrande om man inte är van vid det.
Kunde det här fungera?
Jag har nu använt Linux sedan julen 2007, och jag började titta på script riktigt på allvar först ganska nyligen. Syntaxen, dvs. hur kommandona skall se ut för att fungera är nu än så länge ganska främmande. Men som sagt, det kommer nog med tid och lite hjälp på vägen. Jag har redan lärt mig en hel del under det här meningsutbytet.
Det här tycker jag att ser riktigt lovande ut:
find ~ -iname '*.zip' -exec cp -uv {} /media/IOMEGA_HDD/home \;
Men. Kunde det här fungera också?
find ~ -iname '0backup.zip' -exec mv -uv {} /media/IOMEGA_HDD/home \;
Jag har tittat i mv man och jag kan tänka mig att det skulle kunna fungera. Men om inte, så går det nog att göra stegvis också. MV börjar bli lite risk att prova så där bara. Teoretiskt så kunde man ju flytta över hela innehållet - alltså rubb och stubb - i sin /home katalog någonstans. Man kunde bli tvungen att återställa från en säkerhetskopia. Ingen katastrof, men det tar tid. Jag har gjort det några gånger och att återställa 14 GB är nu inte gjort i en handvänding.
Det här tycker jag att ser riktigt lovande ut:
find ~ -iname '*.zip' -exec cp -uv {} /media/IOMEGA_HDD/home \;
Men. Kunde det här fungera också?
find ~ -iname '0backup.zip' -exec mv -uv {} /media/IOMEGA_HDD/home \;
Jag har tittat i mv man och jag kan tänka mig att det skulle kunna fungera. Men om inte, så går det nog att göra stegvis också. MV börjar bli lite risk att prova så där bara. Teoretiskt så kunde man ju flytta över hela innehållet - alltså rubb och stubb - i sin /home katalog någonstans. Man kunde bli tvungen att återställa från en säkerhetskopia. Ingen katastrof, men det tar tid. Jag har gjort det några gånger och att återställa 14 GB är nu inte gjort i en handvänding.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Kunde det här fungera?
Det där kommer att flytta alla filer som heter exakt 0backup.zip från hemkatalogen (och underkataloger) till /media/IOMEGA_HDD/home. Men det kan nog bli lite problem om det råkar finns flera filer med det precis namnet eftesom de kommer flyttas till samma ställe.foringmar skrev:Det här tycker jag att ser riktigt lovande ut:
find ~ -iname '*.zip' -exec cp -uv {} /media/IOMEGA_HDD/home \;
Men. Kunde det här fungera också?
find ~ -iname '0backup.zip' -exec mv -uv {} /media/IOMEGA_HDD/home \;
Ett bra tips är att sätta ett echo framför mv. Då kommer kommandot att skriva vad den tänkte göra istället för att faktiskt göra det. Exempelvis:foringmar skrev:Jag har tittat i mv man och jag kan tänka mig att det skulle kunna fungera. Men om inte, så går det nog att göra stegvis också. MV börjar bli lite risk att prova så där bara. Teoretiskt så kunde man ju flytta över hela innehållet - alltså rubb och stubb - i sin /home katalog någonstans. Man kunde bli tvungen att återställa från en säkerhetskopia. Ingen katastrof, men det tar tid. Jag har gjort det några gånger och att återställa 14 GB är nu inte gjort i en handvänding.
Kod: Markera allt
find ~ -iname '*.zip' -exec echo mv -uv {} /media/IOMEGA_HDD/home/ \;