s3cmd com --delete-removed

2

Atualmente, estou escrevendo um script para sincronizar arquivos em buckets s3 com s3cmd.

Eu verifico o documento e ele diz:

s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX] or s3://BUCKET[/PREFIX] LOCAL_DIR

também acho uma boa opção:

--delete-removed
         Delete remote objects with no corresponding local file [sync]

Eu testei na primeira forma de s3cmd sync com --delete-removed:

s3cmd sync -r --delete-removed LOCAL_DIR s3://BUCKET[/PREFIX]

Funciona como um encanto que o s3 bucket excluirá qualquer arquivo que não esteja no meu LOCAL_DIR

No entanto, quando tento o segundo formulário:

s3cmd sync -r --delete-removed s3://BUCKET[/PREFIX] LOCAL_DIR

O s3cmd parece primeiro excluir todos os meus arquivos em LOCAL_DIR e, em seguida, fazer o download dos arquivos do s3 bucket para o meu LOCAL_DIR

Aparentemente, é um desperdício de tempo, então existe outra maneira melhor de sincronizar sem excluir todos os meus arquivos locais primeiro. Ou seja, copiar todos os arquivos do bucket s3 para o meu diretório local exatamente

    
por lazyka 21.06.2013 / 10:06

1 resposta

2

Tome cuidado com a barra final (ou falta de barra) nos nomes dos caminhos. Faz diferença.

link

Important — in both cases just the last part of the path name is taken into account. In the case of dir1 without trailing slash (which would be the same as, say, ~/demo/dir1 in our case) the last part of the path is dir1 and that’s what’s used on the remote side, appended after s3://s3…/path/ to make s3://s3…/path/dir1/….

On the other hand in the case of dir1/ (note the trailing slash), which would be the same as ~/demo/dir1/ (trailing slash again) is actually similar to saying dir1/* – ie expand to the list of the files in dir1. In that case the last part(s) of the path name are the filenames (file1-1.txt and file1-2.txt) without the dir1/ directory name. So the final S3 paths are s3://s3…/path/file1-1.txt and s3://s3…/path/file1-2.txt respectively, both without the dir1/ member in them. I hope it’s clear enough, if not ask in the mailing list or send me a better wording ;-)

    
por 24.06.2013 / 09:35