Mám účet seedbox, který používám pro torrentování. Nastavil jsem úlohu cron, která používá rsync
stáhnout všechny soubory ze seedboxu na můj server ubuntu 14.04.1. Složka pro stahování je sdílená samba, protože jsem dříve používal systém Windows k uspořádání obsahu do složek před jeho přesunem na trvalejší místo na mém serveru. Před upgradem na 14.04 jsem používal 12.04 a vše fungovalo OK.
Problém je v tom, že soubory, které získám ze seedboxu, jsou vlastněny uživatelem s názvem „544“ (toto je uživatelské jméno generované seedboxem, ne nějaká osmičková věc) a můj uživatel je na mém serveru nemůže smazat. Po změně oprávnění ke složce pro stahování je mohu smazat. Také jsem všem uživatelům udělil oprávnění ke čtení/zápisu do složky samba při jejím sdílení.
Moje otázka tedy zní takto:Je možné pomocí nějakého elegantního příkazu provést rsync
změnit uživatele/oprávnění k souborům při jejich stahování? Nebo je možné zařídit, aby složka fungovala tak, že všechny nové soubory po zkopírování/přesunutí do ní automaticky změní uživatele? Myslím, že bych mohl vložit chmod
příkaz v sudo cron spustit jednou za čas pro změnu vlastníka souborů, ale protože někdy může být množství dat ke stažení poměrně velké, je obtížné vědět, kdy jej spustit ve vztahu k rsync-job abyste se ujistili, že jsou staženy všechny soubory.
Přijatá odpověď:
rsync
pouze zachová vlastníka, pokud o to požádáte pomocí -o
— jinak budou soubory ve vlastnictví uživatele spouštějícího rsync
příkaz, stejně jako při vytváření jiných souborů. -a
obsahuje -o
, nicméně tolik běžných rsync
příkazové řádky to obsahují. man rsync
obsahuje pasáž o tomto výslovně:
For example: if you want to use -a (--archive) but don’t want -o
(--owner), instead of converting -a into -rlptgD, you could
specify -a --no-o (or -a --no-owner).
Takže místo rsync -a source dest
můžete použít rsync -a --no-o source dest
aby soubory vlastnil uživatel spouštějící příkaz.
Na druhou stranu, vlastníka souboru můžete obvykle změnit pouze v případě, že jste root, takže toho moc nenajdete. Pokud je z nějakého důvodu nutné spustit tuto úlohu jako root a chcete, aby soubory vlastnil váš normální uživatel a nikoli root, můžete použít --chown
možnost:
rsync -a --chown=youruser:yourgroup ...
Existuje také --usermap
možnost pro složitější mapování, pokud si chcete ponechat některé uživatele. Vyžaduje seznam from:to
oddělený čárkami párů.
Jako poslední možnost, protože zjevně používáte rsync
z úlohy cron, stačí k úloze cron přidat operaci změny vlastníka/oprávnění pomocí && chown ...
.