Ik heb een aantal maanden geleden een php scripje geschreven om een backup van een server te draaien.
in feite werkte het redelijk simpel.
Loop elke directorie het systeem af. (min wat niet interesante directories)
en kijk of je een tag bestand ziet staan.
Staat er een tag bestand, parse dan de opties die daar in staan.
(bestanden en/of directories die genegeerd moeten worden, etc..)
en maak een backup van de onderliggende directories.
dit doe ik mogelijk zwaar onefficient door bestand voor bestand toe te voegen aan een tar archief.
Hier is ooit voor gekozen omdat dat gewoon wat meer vrijheid geeft en controle over wat er wel en niet gebackuped word.
Echter is er nu een bepaalde map die gebackuped moet worden die zo'n 4000 directories bevat, met in elke directorie zo'n 5 bestanden.
Goed voor een 20.000 bestanden, en een MB of 670.
Opzich maakt mij dat natuurlijk helemaal geen ruk uit. Maar mijn backup script is er meerdere dagen mee bezig om dat allemaal te verwerken.
Dat is uiteraard niet acceptabel.
Maar toch vraag ik me af waar deze traagheid vandaan komt, want gezamelijk komen alle andere directories die gebackuped worden ook wel aan 20.000 bestanden, en qua grote halen ze het ook wel.
nu heb ik uiteraard een testje gedaan.
als ik de directorie in kwestie gewoon tar via tar czvf bbb bbb.tar.gz dan duurt het al met al maar een paar minuten.
Een mogelijke oplossing is dus gewoon vanaf de backup "tag" de rest met tar afhandelen in combi met --exclude om sommige bestanden niet te backuppen.
Echter ben ik wel bang dat ik wat flexibilitiet verlies dan.
Want het zou zomaar kunnen zijn dat ik bestanden die als volgt genoemt zijn
bestand_van_10gb_01.jpg
bestand_van_10gb_02.jpg
niet wil backuppen, maar dan zou ik ze allemaal specefiek moeten gaan noemen?
Ook kan het voorkomen dat ik b.v. een directorie genaamt belangrijke_bestanden niet wil backuppen.
Maar bestanden die zo heten wel.
Ook die distinctie kan ik dan niet maken.
De vraag is dus eigenlijk vergis ik me qua tar en hoe specefiek je moet en kunt zijn over wat je wel en niet wilt backuppen.
en of meschien iemand weet hoe je de boel wat sneller kan later verlopen als je bestanden 1 voor 1 aan een tar toevoegd.
een soort threaded manier meschien waar ik gewoon de tar commando's allemaal tegelijk op het systeem zijn nek gooi. (moet hij kunnen hebben hoor)
in feite werkte het redelijk simpel.
Loop elke directorie het systeem af. (min wat niet interesante directories)
en kijk of je een tag bestand ziet staan.
Staat er een tag bestand, parse dan de opties die daar in staan.
(bestanden en/of directories die genegeerd moeten worden, etc..)
en maak een backup van de onderliggende directories.
dit doe ik mogelijk zwaar onefficient door bestand voor bestand toe te voegen aan een tar archief.
Hier is ooit voor gekozen omdat dat gewoon wat meer vrijheid geeft en controle over wat er wel en niet gebackuped word.
Echter is er nu een bepaalde map die gebackuped moet worden die zo'n 4000 directories bevat, met in elke directorie zo'n 5 bestanden.
Goed voor een 20.000 bestanden, en een MB of 670.
Opzich maakt mij dat natuurlijk helemaal geen ruk uit. Maar mijn backup script is er meerdere dagen mee bezig om dat allemaal te verwerken.
Dat is uiteraard niet acceptabel.
Maar toch vraag ik me af waar deze traagheid vandaan komt, want gezamelijk komen alle andere directories die gebackuped worden ook wel aan 20.000 bestanden, en qua grote halen ze het ook wel.
nu heb ik uiteraard een testje gedaan.
als ik de directorie in kwestie gewoon tar via tar czvf bbb bbb.tar.gz dan duurt het al met al maar een paar minuten.
Een mogelijke oplossing is dus gewoon vanaf de backup "tag" de rest met tar afhandelen in combi met --exclude om sommige bestanden niet te backuppen.
Echter ben ik wel bang dat ik wat flexibilitiet verlies dan.
Want het zou zomaar kunnen zijn dat ik bestanden die als volgt genoemt zijn
bestand_van_10gb_01.jpg
bestand_van_10gb_02.jpg
niet wil backuppen, maar dan zou ik ze allemaal specefiek moeten gaan noemen?
Ook kan het voorkomen dat ik b.v. een directorie genaamt belangrijke_bestanden niet wil backuppen.
Maar bestanden die zo heten wel.
Ook die distinctie kan ik dan niet maken.
De vraag is dus eigenlijk vergis ik me qua tar en hoe specefiek je moet en kunt zijn over wat je wel en niet wilt backuppen.
en of meschien iemand weet hoe je de boel wat sneller kan later verlopen als je bestanden 1 voor 1 aan een tar toevoegd.
een soort threaded manier meschien waar ik gewoon de tar commando's allemaal tegelijk op het systeem zijn nek gooi. (moet hij kunnen hebben hoor)
offtopic:
Ja ik snap dat dat niks met threaden te maken heeft, maar kon niet echt een beter woord vinden
Ja ik snap dat dat niks met threaden te maken heeft, maar kon niet echt een beter woord vinden