Ubuntu 20.04.1, rsync, mv:
In een map worden af en toe nieuwe bestanden aangemaakt. We noemen deze map:
/docs
Een python script triggered rsync nadat wijzigingen in deze map zijn voltooid. Rsync zal nieuwe bestanden kopieren naar een backup locatie, dus alleen bestanden die daar nog niet bestaan:
/backup
Nu wil ik graag direct daarna een mv commando om de bestanden van /docs die door Rsync zijn gekopieerd te verplaatsen naar:
/docs/archive
(Deze map is excluded bij rsync.)
Maar stel dat rsync is getriggered en wel 10GB moet kopieren van /docs naar /backup. Dat duurt even.
Ondertussen kunnen nieuwe bestanden naar /docs worden geschreven.
Als rsync klaar is wordt direct het mv commando aangeroepen en alle bestanden, ook die nieuwe bestanden die dus nog niet zijn gebackupped door rsync, naar /docs/archive geschreven. Dat wil ik niet.. rsync zal vanzelf weer een keer worden aangeroepen en vervolgens zal het die bestanden dus niet meer zien om te backuppen.
Hoe kan ik dit specifieke geval voorkomen? Ik wil dus eigenlijk dat het mv commando alleen bestanden verplaatst die zojuist door rsync zijn herkent als "nieuw".
EDIT:
een simpele oplossing zou zijn om eerst het mv commando uit te voeren, nieuwe bestanden naar /docs/archive kopieren. Vervolgens vanuit die map rsyncen naar /backup. Dit vind ik heel aantrekkelijk.. maar wil ik juist niet, omdat een gebruiker ten allen tijde /docs/archive mag leegvegen (hij weet dat alles in die map is gebackupped). Zeker als het om grote bestanden gaat is de kans groot dat die map snel wordt leeggeveegd om ruimte te maken. Dan heeft rsync misschien nog geen kans gehad om alles te backuppen.
EDIT2:
ik besef dat de genoemde oplossing op zich wel kan. Voordat een gebruiker ziet dat de bestanden in /docs/archive zitten, is rsync denk ik wel klaar met backuppen.
De gebruiker kijkt namelijk zelden werkelijk naar /docs of /docs/archive, maar naar een (2-way) gesynchroniseerde versie daarvan op een remote locatie.
rsync en mv werken beide lokaal en zullen dus eerder klaar zijn dan de synchronisatie naar remote..
In een map worden af en toe nieuwe bestanden aangemaakt. We noemen deze map:
/docs
Een python script triggered rsync nadat wijzigingen in deze map zijn voltooid. Rsync zal nieuwe bestanden kopieren naar een backup locatie, dus alleen bestanden die daar nog niet bestaan:
/backup
Nu wil ik graag direct daarna een mv commando om de bestanden van /docs die door Rsync zijn gekopieerd te verplaatsen naar:
/docs/archive
(Deze map is excluded bij rsync.)
Maar stel dat rsync is getriggered en wel 10GB moet kopieren van /docs naar /backup. Dat duurt even.
Ondertussen kunnen nieuwe bestanden naar /docs worden geschreven.
Als rsync klaar is wordt direct het mv commando aangeroepen en alle bestanden, ook die nieuwe bestanden die dus nog niet zijn gebackupped door rsync, naar /docs/archive geschreven. Dat wil ik niet.. rsync zal vanzelf weer een keer worden aangeroepen en vervolgens zal het die bestanden dus niet meer zien om te backuppen.
Hoe kan ik dit specifieke geval voorkomen? Ik wil dus eigenlijk dat het mv commando alleen bestanden verplaatst die zojuist door rsync zijn herkent als "nieuw".
EDIT:
een simpele oplossing zou zijn om eerst het mv commando uit te voeren, nieuwe bestanden naar /docs/archive kopieren. Vervolgens vanuit die map rsyncen naar /backup. Dit vind ik heel aantrekkelijk.. maar wil ik juist niet, omdat een gebruiker ten allen tijde /docs/archive mag leegvegen (hij weet dat alles in die map is gebackupped). Zeker als het om grote bestanden gaat is de kans groot dat die map snel wordt leeggeveegd om ruimte te maken. Dan heeft rsync misschien nog geen kans gehad om alles te backuppen.
EDIT2:
ik besef dat de genoemde oplossing op zich wel kan. Voordat een gebruiker ziet dat de bestanden in /docs/archive zitten, is rsync denk ik wel klaar met backuppen.
De gebruiker kijkt namelijk zelden werkelijk naar /docs of /docs/archive, maar naar een (2-way) gesynchroniseerde versie daarvan op een remote locatie.
rsync en mv werken beide lokaal en zullen dus eerder klaar zijn dan de synchronisatie naar remote..
[ Voor 40% gewijzigd door Jazco2nd op 29-10-2020 16:41 ]