Como faço para arquivos scp de tamanho menor que x?

10

Estou desenvolvendo algo no meu laptop e digitalizando os arquivos em um PC de alto desempenho (um servidor sem monitor). Por preguiça eu só faço isso atualmente (no laptop):

scp -r ~/project/* server:~/project/

No entanto, alguns dos arquivos no diretório do projeto são alguns arquivos de log e arquivos que eu não preciso enviar, o que às vezes pode ser um show ou algo assim. O que eu gostaria é um comando limpo que basicamente faz a mesma coisa (transmite todos os arquivos no projeto e em seus subdiretórios), mas apenas envia arquivos sob um determinado limite de tamanho de arquivo, como 100 mb. Eu sou apenas um pouco experiente com bash e não com regexp, então eu realmente não tenho idéia de como fazer isso sem algum método complicado, como importar sys para python e usando um monte de ifs e comparações.

    
por iammax 13.07.2017 / 18:29

1 resposta

26

você pode usar o comando 'rsync', que tem a opção de controlar o tamanho do arquivo a ser excluído.

rsync -rv --max-size=100m /path/in/local/ server:~/project/

de ' man rsync ',

--max-size=SIZE    don't transfer any file larger than SIZE

Resposta atualizada : simplesmente exclua os arquivos de log com a opção 'rsync' --exclude como abaixo

rsync -rv --exclude='*.log' --max-size=100m /path/in/local/ server:~/project/

ou você pode usar a combinação de comandos 'find' com 'scp' e especificar o limite de tamanho de arquivo com sua opção -size . use ! -name '*.log' para excluir certos arquivos e termine com 'log'.

find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;
    
por αғsнιη 13.07.2017 / 18:54