Estou executando o scp e copiando uma pasta do servidor remoto, estou executando com -rl, para ver os arquivos sendo copiados, é possível pular o arquivo atual de alguma forma?
Estou executando o scp e copiando uma pasta do servidor remoto, estou executando com -rl, para ver os arquivos sendo copiados, é possível pular o arquivo atual de alguma forma?
Respostas:
Não, você não pode. Mas você pode parar scp
e usar rsync
. Ele copiará apenas as diferenças restantes da cópia parcial e você poderá excluir todos os arquivos ou diretórios que não deseja transferir.
rsync -avP -e ssh --exclude=somefile --exclude=somedir ./localdir/ user@server:remotedir/
Não, não com -r
ou qualquer outra sintaxe que execute várias transferências de arquivos em um scp
comando.
Dito isto, scp
também segue o paradigma UNIX: escreva programas que forneçam funcionalidades simples e precisas que possam ser encadeadas de maneiras interessantes. Isso significa que seria possível escrever um loop que interativamente executa invocações individuais do comando, uma por arquivo. Você seria capaz de quebrar os comandos individuais enquanto eles estão sendo executados. (Ctrl-C)
O código para isso está sendo deixado como um exercício para o leitor, mas a necessidade desse loop ser executado em um shell interativo deve ser enfatizada. A quebra de um shell não interativo encerraria o trabalho inteiro.
Sim você pode!
Vamos listar o diretório remoto e copiar cada arquivo separadamente. Em seguida, pressione ctrl-c para cada arquivo que você não deseja copiar:
OLD_IFS="$IFS"
IFS=$'\n'
for file in `ssh user@host ls /remote/directory/`
do echo user@host:/remote/directory/$file /local/directory/
done;
IFS="$OLD_IFS"
OLD_IFS está aqui para manipular arquivos com espaços neles.