2013-09-23 26 views
5

Ho cercato di capire come eseguire il backup dei contenuti della cartella dell'utente del mio file server (CentOS via smb), ignorando determinati tipi di file e directory. Sembra che questo dovrebbe essere facile, ma non riesco a capire come ignorare più directory.Come eseguire il backup con s3cmd, ignorando più directory e tipi di file

vorrei ignorare il seguente:

  • tutti i file e le directory che iniziano con un . o di un _
  • tutti i file temporanei di MS Office (ad esempio ~$*)
  • file di blocco (ad esempio .lock

Ho provato diverse combinazioni della bandiera --exclude, ma non riesco a far funzionare nessuno ght.

Questo è il comando che rende più senso, ma non è escluso nulla:

s3cmd sync --dry-run --verbose --delete-removed --exclude '.*' '_*' '~$*' '*.lock' /home/user-folder s3://bucket-name/ 
+0

Mi interessa saltare file Ts. Darò un'occhiata – Ben

risposta

1

Ho fare qualcosa di simile. La chiave è quella di utilizzare --exclude prima di ogni modello che si desidera far corrispondere:

s3cmd -v --recursive --exclude ".ts" --exclude ".aac" --exclude "/thumbnails" put /var/www/folder s3://bucket/ 

Inoltre sono riuscito a usare ts senza il simbolo jolly e ha funzionato nel mio caso!

8

Se si sta già utilizzando .gitignore, si può fare qualcosa di simile

s3cmd sync --exclude '.git/*' --exclude-from .gitignore <local_dir> s3://<bucket>/ 

come dichiarato nella this blog post e confermato dalla documentazione per --exclude-from dal official docs (Ctrl + F e cercare "escludere-da") .

Funziona alla grande, con un piccolo inconveniente: se si esclude una cartella all'interno di .gitignore, è necessario escludere anche i suoi contenuti, oppure s3cmd ne acquisirà il contenuto. Tuttavia, questo è facile, basta aggiungere una riga come <foldername>/* all'interno dello .gitignore e tutto andrà bene.


EDIT:

Beh, meglio di questo.Impostare un file .s3ignore e solo fare riferimento ad esso dal comando sync:

s3cmd sync --exclude-from .s3ignore <local_dir> s3://<bucket>/ 

.s3ignore esempio:

.git 
.git/* 
.gitignore 
node_modules 
node_modules/* 
*.swo 
*.swp 
*.pyo 
*.pyc 
0

Altre risposte menzione passando --exclude <pattern> per ogni modello, e l'imballaggio tutti gli schemi in un file per passare con --exclude-from <file>

Utilizzando :

È anche possibile imballare tutti i modelli in un'espressione regolare e passarlo con l'opzione --rexclude:

Il modello Regex per la domanda di cui sopra: ".^\.*|._*|.~$*|.*.lock"

s3cmd sync --dry-run --verbose --delete-removed --rexclude ".^\.*|._*|.~$*|.*.lock" /home/user-folder s3://bucket-name/

Problemi correlati