Um script de shell para copiar todos os arquivos com a mesma estrutura

Um script de shell para copiar todos os arquivos com a mesma estrutura

Este script do shell foi projetado para uma tarefa específica necessária para o nosso servidor. Então, compartilhando o script com os leitores da Tecadmin. Pode ser útil para você.

Requerimento

Nosso requisito é copiar todos os arquivos criados no diretório para outro diretório com a mesma estrutura de diretório. O script será executado em um intervalo regular, pesquise todos os arquivos criados no diretório de origem e copie -os para o diretório de destino. O script deve manter a mesma estrutura de diretório no diretório de destino. Depois disso, altere a permissão no diretório de destino. Após a cópia bem -sucedida do arquivo, o script deve remover o arquivo do diretório de origem.

Script de shell

Crie um script de shell no seu sistema e adicione abaixo o conteúdo. Atualize os diretórios de origem e destino para a localização adequada.

Defina Change_ownership para 0, se você não quiser mudar de propriedade nos arquivos de destino.

#!/Bin/Bash ###################### NO ##### ### Defina a fonte e o diretório de destino apropriado localização fonte_dir = "/fonte/dir/" dest_dir = "/desination/dir/" tmp_file =/tmp/copyfileslist.txt ### Defina o nome de usuário e o nome do grupo para definir permissão em arquivos copiados ### Definir Change_ownership como 1 para alterar a propriedade ou 0 para inalterado altere -se ##### não edite abaixo até que seja necessário ################# ### teste se existir o diretório de origem ### o script interromper se a fonte não existir se [ -d "$ fonte_dir"]; Então echo "diretório de origem encontrado" else eco "diretório de origem não encontrado. Verifique as variáveis ​​acima são definidas corretamente "Echo" Script Exited "Sair 1 fi ### Teste Se o diretório de destino existir ### O script criará diretório de destino, se não existir. Se falhar em criar diretório, o script terminará se [-d "$ dest_dir"]; Então echo "Diretório de destino encontrado, tudo ok" else eco "Diretório de destino não encontrado, criando agora" mkdir -p "$ dest_dir" se [$? -eq 0]; Em seguida, eco "criou com sucesso o diretório de destino."Else Echo" não conseguiu criar diretório de destino. O script saiu "Sair 1 fi fi ### copiar todos os arquivos disponíveis no diretório de origem ### depois de copiar com sucesso o arquivo Remova do diretório de origem. CD "$ fonte_dir" se [$? -eq 0]; Então encontre . -TIPO F> $ TMP_FILE Enquanto leia current_file_name do cp - -parents "$ current_file_name" "$ dest_dir" se [$? -eq 0]; então eco "arquivo $ current_file_name copiado com sucesso."rm -f" $ current_file_name "else echo" arquivo $ current_file_name falhou em copiar "fi feito < $TMP_FILE rm -f $TMP_FILE fi ## Set the permissions after copying files if [ $CHANGE_OWNERSHIP -eq 1 ]; then sudo chmod 775 -R "$DEST_DIR" sudo chown $USER:$GROUP -R "$DEST_DIR" fi ################### End of Script ###################################
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#!/Bin/Bash ###################### NO ##### ### Defina a origem e o diretório de destino local fonte_dir = "/fonte/dir/" dest_dir = "/desination/dir/" tmp_file =/tmp/copyfileslist.txt ### Defina o nome de usuário e o nome do grupo para definir permissão em arquivos copiados ### Definir Change_ownership como 1 para alterar a propriedade ou 0 para inalterado It Change_ownership = 1User = 'Root'Group =' Root '###### #### Não edite abaixo isso até que seja necessário ################## ### teste se existir o diretório de origem ### o script interromper se a fonte não existir se [ - - d "$ fonte_dir"]; Então echo "diretório de origem encontrado" else eco "diretório de origem não encontrado. Verifique as variáveis ​​acima são definidas corretamente "Echo" Script Exited "Sair 1fi ### Teste Se o diretório de destino existir ### O script criará diretório de destino, se não existir.Se falhar em criar diretório, o script terminará se [-d "$ dest_dir"]; Então echo "Diretório de destino encontrado, tudo ok" else eco "Diretório de destino não encontrado, criando agora" mkdir -p "$ dest_dir" se [$? -eq 0]; Em seguida, eco "criou com sucesso o diretório de destino."Else Echo" não conseguiu criar diretório de destino. O script saiu "Sair 1 Fifi ### Copie todos os arquivos disponíveis no diretório de origem ### depois de copiar com sucesso o arquivo Remova do diretório de origem. CD "$ fonte_dir" se [$? -eq 0]; Então encontre . -TIPO F> $ TMP_FILE Enquanto leia current_file_name do cp - -parents "$ current_file_name" "$ dest_dir" se [$? -eq 0]; então eco "arquivo $ current_file_name copiado com sucesso."rm -f" $ current_file_name "else echo" arquivo $ current_file_name falhou em copiar "fi feito < $TMP_FILE rm -f $TMP_FILEfi ## Set the permissions after copying files if [ $CHANGE_OWNERSHIP -eq 1 ]; then sudo chmod 775 -R "$DEST_DIR" sudo chown $USER:$GROUP -R "$DEST_DIR"fi ################### End of Script ###################################

Salve seu arquivo e feche -o.

Em seguida, defina a permissão de execução para o arquivo de script.

script chmod +x.sh