Rsync copiando o diretório atual com nome

7

Eu quero copiar o diretório atual para o meu diretório de backup:

Eu tentei esse comando rsync -a . ~/backup/ , mas ele copia o conteúdo do diretório atual em vez de criar um novo diretório no destino.

Sei que criar um novo diretório no destino pode ser alcançado evitando a barra no caminho de origem. Mas isso não funciona no meu caso, pois estou usando um ponto (".") Em vez do nome do diretório.

Eu quero que o rsync crie um novo diretório no caminho de destino com o mesmo nome do diretório atual. Como posso conseguir isso?

    
por B.A.B 23.04.2015 / 12:45

2 respostas

3

Eu gosto do seu script, mas, se necessário, você pode fazer isso pela linha de comando diretamente do diretório atual:

rsync -a "$PWD" ~/backup/

ou de uma forma semelhante à sua abordagem de script com

rsync -a "$(pwd -P)" ~/backup/

Notas:

  • É necessário citar o diretório atual se o caminho estiver presente, por exemplo, um ou mais espaços.

  • No caso de links simbólicos no caminho, é possível obter o caminho físico evitando todos os links simbólicos especificando a opção -P no pwd de invocação de comando ( $(pwd -P) ) ou chamando o executável com seu caminho completo ( $(/bin/pwd) ).
    Realmente existe o built-in pwd que por padrão mostra o caminho symlinked , e o executável /bin/pwd que por padrão mostra o físico

  • Ambos os comandos referem-se à variável $PWD que contém o diretório de trabalho atual quando são solicitados pela versão do caminho com os eventuais symlinks : você não precisa estritamente do caminho físico , você pode evitar chamar o subshell e usar diretamente a variável $PWD .

    rsync -a "$PWD" ~/backup/
    
por 23.04.2015 / 14:38
2

Encontrou uma solução:

Criado um novo script de shell como este:

current_dir='pwd'
dir_name='basename $current_dir'
rsync -a . ~/backup/$dir_name

e ao executar isso, criará um novo diretório no destino e copiará o conteúdo atual da pasta.

    
por 23.04.2015 / 13:01