rsync: come escludere la directory più in alto


14

Quindi, ho un problema apparentemente semplice, ma finora non ho trovato una soluzione: voglio escludere la directory più in alto da un rsync, pur sincronizzando tutti i suoi figli. Il problema particolare è che non ho il permesso di modificare i tempi della directory più in alto, ma voglio che tutti i bambini abbiano i tempi sincronizzati correttamente.

Il comando rsync che sto usando è il seguente:

rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/

e si server.example.com:/usr/local/directory/presenta così:

drwxrws---  5 root   staff 24576 Jul  9 15:00 .

(il mio utente locale è membro di staff)

Quando eseguo rsync, viene visualizzato il seguente errore:

rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
make: *** [pub_to_mel_internal] Error 23

Questa è la versione 3.0.9 sul computer locale e 3.0.7 sul telecomando, entrambe le macchine che eseguono Debian.


Conoscete la sintassi in questo esempio: wirepeed.xs4all.nl/mediawiki/index.php/… Permette di includere file / directory specifici da una directory altrimenti esclusa. Tuttavia, potrebbe essere necessario utilizzare un file di esclusione.
jippie,

Si. Il problema è che non riesco a convincerlo ad escludere la directory di livello superiore (in particolare). In passato non ho avuto problemi con il mixaggio / esclusione, sembra che il livello superiore sia un caso speciale.
Steve Pomeroy,

Risposte:


8

Penso che le regole di filtro di rsync non possano corrispondere alla directory di livello superiore, quindi è sempre sincronizzata. Una soluzione alternativa è sincronizzare tutti i file all'interno di questa directory anziché la directory stessa.

rsync -rlptDu -- * server.example.com:/usr/local/directory/

Aggiungi .[!.]*dopo *se hai file di punti nella directory più in alto e ..?*se hai nomi di file che iniziano con due punti.


2
Fantastico, grazie! Che funzioni. L'unico aspetto negativo di questa tecnica è che richiede alla shell di selezionare tutti i file. Se ci sono tonnellate di file nella directory (cosa che non ho nel mio caso), potrebbe soffocare. Ciò potrebbe probabilmente essere risolto usando xargs (anche se non con le opzioni --delete).
Steve Pomeroy,

Un problema che ho riscontrato con l'utilizzo *era che --deletenon cancellava alcun file, poiché non facevano parte della ricerca.
thomasa88,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.