GNU/Linux >> Linux Esercitazione >  >> Linux

Forzare nuove autorizzazioni sui file dopo Rsync da Seedbox?

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.

Correlati:la differenza tra &&e | in bash script?

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


Linux
  1. Escludere tutti i file di sottolineatura punto da Rsync?

  2. Come rimuovere ricorsivamente le autorizzazioni di esecuzione dai file senza toccare le cartelle?

  3. Rsync sta cambiando le autorizzazioni della directory?

  4. Eseguire il backup dei file con rsync

  5. cp -r senza file nascosti

rsync N file più recenti in una directory

Linux unisci cartelle:rsync?

Come utilizzare rsync dal PC Windows al server Linux remoto?

Crea un nuovo albero di directory vuoto dall'albero esistente con i file

Perché rsync non riesce a copiare i file da /sys in Linux?

File specifici di Linux (mv o cp) da un elenco di file di testo?