Forçar novas permissões em arquivos após rsync do seedbox

7

Eu tenho uma conta seedbox que eu uso para torrent. Eu configurei um cron job que usa rsync para baixar todos os arquivos do seedbox para o meu servidor ubuntu 14.04.1. A pasta de download é um compartilhamento de samba, já que usei janelas anteriormente para organizar o conteúdo em pastas antes de movê-lo para um local mais permanente no meu servidor. Antes de atualizar para o 14.04, usei 12.04 e tudo funcionou bem.

O problema é que os arquivos que recebo da seedbox pertencem a um usuário chamado "544" (esse é o nome de usuário gerado pela seedbox, não alguma coisa octal) e não podem ser excluídos pelo meu usuário no meu servidor. Depois de alterar as permissões na pasta de download, posso excluí-las. Além disso, eu dei a todos os usuários permissões para ler / escrever na pasta samba ao compartilhá-lo.

Então, a minha pergunta é a seguinte: É possível através de algum comando elegante executado fazer com que rsync altere usuário / permissões nos arquivos quando fizer o download? Ou é possível fazer com que a pasta funcione de forma que todos os novos arquivos mudem automaticamente o usuário quando copiados / movidos para ele? Eu acho que eu poderia colocar o comando chmod no sudo cron para ser executado de vez em quando para alterar o proprietário dos arquivos, mas como às vezes a quantidade de dados a serem baixados pode ser bastante grande, é difícil saber quando acione-o em relação ao rsync-job para garantir que todos os arquivos sejam baixados.

    
por GeGiggedy 04.08.2014 / 09:44

2 respostas

14

rsync somente preserva o proprietário se você solicitar com -o - caso contrário, os arquivos pertencerão ao usuário que estiver executando o comando rsync , assim como quando outros arquivos são criados . -a inclui -o , entretanto, muitas linhas de comando comuns de rsync o incluem. man rsync inclui uma passagem sobre isso explicitamente:

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

Então, em vez de rsync -a source dest , você pode usar rsync -a --no-o source dest para que os arquivos sejam de propriedade do usuário que está executando o comando.

Por outro lado, normalmente você só pode alterar o proprietário de um arquivo se você estiver root, então isso não acontece muito. Se for necessário executar esse trabalho como root por algum motivo e você quiser que os arquivos pertençam ao usuário normal em vez do root, você pode usar a opção --chown :

rsync -a --chown=youruser:yourgroup ...

Há também uma opção --usermap para mapeamentos mais complicados, se você quiser manter alguns usuários. É necessária uma lista separada por vírgula de from:to pairs.

Como uma opção final, uma vez que você está aparentemente executando rsync de uma tarefa cron, basta anexar a operação de alteração de proprietário / permissões à tarefa cron com && chown ... .

    
por 04.08.2014 / 10:01
0

Eu testei algumas maneiras, mas no meu caso, o resultado de, e. este script

rsync -a -v --progress --modify-window=1 -c -b -i -s -m --del -vv --ignore-errors --chmod=ugo=rwx --delete --delete-excluded  --exclude='*~'  --exclude='.*' --backup-dir=.rsync_bak /home/test /media/user/usb_ext4

foi que a permissão não pode ser maior do que a permissão da partição / destino onde o arquivo deve ser gravado. (Verifique essas permissões depois de montar o dispositivo)

    
por 04.01.2018 / 20:17