Espelhando sistemas de arquivos sem transferências [closed]

0

Então aqui está minha situação. Eu tenho um monte de arquivos no meu local em 3 diretórios. Eu tenho um subconjunto desses arquivos + ~ 30 em um servidor em mais 10 diretórios organizados. Eu gostaria de mover os arquivos na máquina local para coincidir com seu diretório no servidor (idealmente eu copia os ~ 30 adicionais ao mesmo tempo, mas se não posso fazer isso manualmente). Alguém tem alguma sugestão sobre como conseguir isso?

Ok, deixe-me ilustrar. Meu local tem arquivos divididos assim em 3 diretórios: [A B .... F] [GH ... P] [Q R ... W]

Meu servidor tem [A B C] [D E F] [G H I J K] [L M N O P] [Q R] [S T U] [V W X Y Z]

Gostaria de mover os arquivos que tenho localmente para o diretório local correspondente, com base em qual diretório eles estão no servidor (sem transferir nenhum arquivo) [] é um diretório, a letra é um arquivo.

    
por Nate 12.12.2017 / 17:44

1 resposta

1

Se não houver nomes duplicados entre os arquivos

  1. obtenha uma lista de arquivos do servidor (geralmente a saída de find , relativa ao diretório comum) e transfira-a para o local
  2. no local, mova todos os arquivos para o mesmo diretório (usando find [...] -exec mv -t some/staging/directory {} \;
  3. no local, com o CWD como o diretório comum, execute algo como:

    while read f; 
    do
       mkdir -p $(dirname "$f")
       mv -v "some/staging/directory/$(basename $f)" "$f"
    done < files_on_server.lst
    
por 12.12.2017 / 19:56