Ho un account seedbox che uso per il torrent. Ho impostato un lavoro cron che utilizza rsync
per scaricare tutti i file dal seedbox sul mio server Ubuntu 14.04.1. La cartella di download è una condivisione samba, poiché in precedenza ho utilizzato Windows per organizzare il contenuto in cartelle prima di spostarlo in una posizione più permanente sul mio server. Prima di eseguire l'aggiornamento alla 14.04, ho utilizzato la 12.04 e tutto ha funzionato correttamente.
Il problema è che i file che ottengo dal seedbox sono di proprietà di un utente chiamato "544" (questo è il nome utente generato dal seedbox, non una cosa ottale) e non possono essere eliminati dal mio utente sul mio server. Dopo aver modificato i permessi sulla cartella di download, posso eliminarli. Inoltre, ho concesso a tutti gli utenti i permessi di lettura/scrittura nella cartella samba dopo averla condivisa.
Quindi la mia domanda è questa:è possibile tramite qualche comando elegante eseguito per fare rsync
cambiare utente/autorizzazioni sui file durante il download? Oppure è possibile far funzionare la cartella in modo che tutti i nuovi file cambino automaticamente utente quando vengono copiati/spostati in essa? Immagino di poter mettere il chmod
comando in sudo cron da eseguire ogni tanto per cambiare il proprietario dei file, ma poiché a volte la quantità di dati da scaricare può essere piuttosto grande, è difficile sapere quando attivarlo in relazione al rsync-job per assicurarti che tutti i file siano stati scaricati.
Risposta accettata:
rsync
solo conserva il proprietario se lo chiedi con -o
— altrimenti i file saranno di proprietà dell'utente che esegue rsync
comando, proprio come quando vengono creati altri file. -a
include -o
, tuttavia, così tanti rsync
comuni le righe di comando lo includono. man rsync
include un passaggio su questo esplicitamente:
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).
Quindi invece di rsync -a source dest
puoi usare rsync -a --no-o source dest
fare in modo che i file siano di proprietà dell'utente che esegue il comando.
D'altra parte, di solito puoi cambiare il proprietario di un file solo se sei root, quindi questo non viene fuori molto. Se è necessario eseguire questo lavoro come root per qualche motivo e vuoi che i file siano di proprietà del tuo utente normale piuttosto che come root, puoi usare il --chown
opzione:
rsync -a --chown=youruser:yourgroup ...
C'è anche una --usermap
opzione per mappature più complicate, se vuoi mantenere alcuni utenti. Richiede un elenco separato da virgole di from:to
coppie.
Come opzione finale, dal momento che apparentemente stai eseguendo rsync
da un lavoro cron, puoi semplicemente aggiungere l'operazione di modifica del proprietario/permessi al lavoro cron con && chown ...
.