GNU/Linux >> Znalost Linux >  >> Linux

Vynutit nová oprávnění pro soubory po Rsync ze Seedboxu?

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ů.

Související:rozdíl mezi &&a | v bash skriptu?

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 ... .


Linux
  1. Získání nových souborů k dědění skupinových oprávnění v systému Linux?

  2. Vyloučit všechny soubory podtržení teček z Rsync?

  3. Jak selektivně umlčet Rsync?

  1. Zálohujte své soubory pomocí rsync

  2. Použití rsync k synchronizaci souborů

  3. cp -r bez skrytých souborů

  1. Jak používat rsync z Windows PC na vzdálený Linux server?

  2. Proč se rsync nedaří zkopírovat soubory z /sys v Linuxu?

  3. Soubory specifické pro Linux (mv nebo cp) z textového seznamu souborů?