alterar diretório para unidade de rede no Cygwin

10

Eu tenho um novo roteador sem fio em minha casa e tenho uma unidade de 3 TB conectada a ele. Gostaria de escrever um script de backup no cygwin que copie os arquivos alterados para o HD externo.

Para iniciantes, como faço cdpara entrar no disco rígido? No Windows File Explorer, simplesmente digito //192.168.1.1e me leva à unidade de rede. No entanto, quando eu digito cd //192.168.1.1, não funciona. Então, como posso mudar o diretório para o HD?

Em segundo lugar, alguém tem conselhos sobre como escrever um bom script de backup para copiar certos diretórios (recursivamente) se eles foram alterados?

drjrm3
fonte

Respostas:

15

Você pode observar as unidades montadas na visão do ambiente cygwin UNIX do SO Windows subjacente, observando /cygdrive. Faça um dfno prompt do cygwin shell (geralmente bash) para ver onde as unidades estão montadas. Aqui está a documentação sobre onde as unidades montadas são encontradas . Por exemplo, para mudar para a unidade de rede montada como Windows f:\, você cddeve /cygdrive/f, como em:

$ cd /cydrive/f

Aqui está um exemplo:

  1. O OS X Mavericks (UNIX) possui uma unidade de 3 TB montada como /Volumes/Time Machine
  2. Um Windows XP (VM) virtual está sendo executado no OS X e vê /Volumes/Time MachinecomoX:\
  3. O Cygwin está sendo executado na VM do XP e vê /Volumes/Time Machinecomo /cygdrive/xou atéx:

$ ls x:

Aqui está uma foto:

insira a descrição da imagem aqui

Se o HD externo não estiver atualmente montado no host do Windows e já estiver mapeado para um ponto de montagem /cygdrive, pode ser necessário montar o compartilhamento de rede. Dê uma olhada na implementação do cygwin do mountcomando UNIX .

Outra maneira de visualizar a pasta de rede é na linha da sintaxe que você usou - eu tenho meu servidor OS X exportando minha pasta de login do OS X, whmcclos, como uma pasta compartilhada SMB. Posso definir meu diretório de trabalho atual para essa pasta compartilhada do cygwin, na minha VM do Windows XP, executando o OS X, da seguinte maneira:

$ cd //192.168.0.2/whmcclos

Dessa forma, nem preciso ter a pasta montada como uma letra de unidade para visualizá-la no cygwin.

Para fazer backup de arquivos que foram alterados, rsynco backup recursivo será feito apenas nos arquivos de uma árvore de diretórios que foram alterados - ele calcula um conjunto mínimo de backups e apenas faz o backup do que foi alterado e possui várias opções, incluindo copiar para unidades de rede e ser pode ser usado com criptografia via ssh. Aqui estão algumas dicas sobre como usar o rsynccygwin. Aqui está um comando para compactar e arquivar (recursar) a origem na unidade montada como c:\ e colocar no destino na unidade montada como f:\no host subjacente do cygwin do Windows.

$ rsync -avz /cygdrive/c/path/to/source /cygdrive/f/path/to/target

Se precisar de mais assistência, deixe um comentário.

Billy McCloskey
fonte
Obrigado, ainda tenho uma pergunta - quando usei -avz, ele não copia corretamente as permissões. Eu entendo rsync: failed to set permissions on "<path>": Permission denied (13). Alguma idéia de como corrigir isso?
drjrm3
Parece algo que vi uma vez com permissões, especificamente com permissões ACL. Observe as permissões que incluem a ACL /bin/ls -le /path/to/sourcee também /bin/ls -le /path/to/targetverifique não apenas as várias permissões de pasta, mas também as permissões de ACL dessas pastas. Veja man lseo -lemuda e man chmode +ae -aswitches. Estou 99% certo de que isso tem algo a ver com permissões. Comece com a sincronização de um subconjunto da árvore de origem para dizer /tmponde você sabe que tem permissão de gravação e veja como isso funciona.
Billy McCloskey