Lave en ZIP-fil for hver mappe - Script

Kære v5.dk og alle brugere herinde
Jeg er ret ny i Linux og sidder med en lille udfordring som jeg ikke selv har kunne finde en løsning på.
Jeg arbejder på et lille script som hver nat skal lave en ZIP-fil af alle mine hjemmesider på min lille Ubuntu Linux Server og kopiere dem over på en ekstern harddisk. Jeg har fundet ud af at kopiere og jeg har fundet ud af at lave 1 stor ZIP, men hvordan kan jeg lave en ZIP for hver mappe
Lad mig forklare. I min /var/www/ har jeg følgende mapper:
website1.dk, website2.dk, billeder, dokumenter, wordpress, (og flere..)
Nu kunne jeg så i mit script lave en manuel linje for hver mappe
zip -r website1.zip website1.dk
zip -r billeder.zip billeder
osv.
Men hvis nu jeg tilføjer en ny mappe til min /var/www/ og glemmer at lægge en zip-kommando ind i mit script, så bliver der ikke taget backup...
Kan man lave noget smart? "Ta alle mapper og lave en zip for hver" agtigt
Pft. Hans

Hej Hans,
Tak for dit spørgsmål på v5.dk - lad mig se om jeg har forstået dig korrekt.
Du har i /var/www/ en række mapper, og for hver mappe du har, ønsker du en .zip-fil med mappens indhold? Yep! Det er muligt. Vi skal have fat i kommandoen "for" som kan bruges til at lave et loop, et loop der kører alle mapperne igennem.
for i in */; do zip -r "${i%/}.zip" "$i"; done
Hvis du stiller dig på serveren i /var/www/ mappen og kører overstående kommando, så får du en ny .zip-fil for hver mappe.
Kort fortalt:
- for betyder oversat på dansk "ligeså mange gange som der er" og bruges til at køre vores zip-kommando, ligeså mange gange, som der er mapper
- i er navnet på den variabel i laver, det kunne i princippte være hvad-som-helst, vores variabel kommer til at indeholde mappe-navnet, ex. "website1.dk/". Vi kan inde i vores script kalde den igen med $i
- */ betyder at "alle mapperne", hvis du fjerner / til sidst, tager den også alm. filer
- ${i%/} denne her er lidt mere kompleks, tuborgklammerne betyder at vi fjerner whitespaces, og %/ bertyder at vi fjerner vores / efter mappe-navn, så vores .zip-fil bliver døbt "website1.dk.zip" og ikke "website1.dk/.zip"
Vigtigt:
- Husk at cd dig ind i den rigtige mappe, før du kører kommandoen, så du ikke zipper hele din server ;-)
Håber dette hjælper dig lidt på vej!
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS