AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 410608
Accepted
Vito De Tullio
Vito De Tullio
Asked: 2017-12-14 03:37:28 +0800 CST2017-12-14 03:37:28 +0800 CST 2017-12-14 03:37:28 +0800 CST

backup original em scp

  • 772

Eu tenho um host remoto com um arquivo que desejo substituir com scp. isso é simples

scp 'myfile.ext' '[email protected]:/bar/baz'

Eu também gostaria de "renomear" o original "/bar/baz/myfile.xt" em um arquivo, e não substituí-lo pela nova versão. Um simples "/bar/baz/myfile.xt~" é suficiente, mas o melhor seria um contador ou a data atual.

existe alguma maneira de fazer isso com scp?

Gostaria de minimizar as chamadas "scp", pois preciso sempre colocar uma senha interativa (não, não posso alterar o método de autenticação)

shell-script scp
  • 3 3 respostas
  • 3388 Views

3 respostas

  • Voted
  1. Best Answer
    roaima
    2017-12-14T05:07:07+08:002017-12-14T05:07:07+08:00

    Você deseja renomear o original /bar/baz/myfile.xtcomo /bar/baz/myfile.xt~ou, melhor ainda, com um contador ou sufixo de data.

    Você não pode fazer isso diretamente com scp, mas aqui estão algumas alternativas ao seu comando original.

    1. Usandorsync

      rsync -ab myfile.ext [email protected]:/bar/baz
      

      O -bsinalizador diz rsyncpara fazer um backup se houver uma alteração no arquivo de destino. O padrão é anexar ~, mas você pode alterar esse padrão. Por exemplo, isso usará a data de hoje (conforme definido na máquina de origem):

      rsync -ab --suffix ".$(date +'%Y%m%d')" myfile.ext [email protected]:/bar/baz
      
    2. Usando sshcom scp. Presumi que bazseja o nome do arquivo de destino, em vez de um diretório no qual o arquivo de origem deve ser copiado:

      ssh [email protected] 'cp -p /bar/baz /bar/baz."$(date +'%Y%m%d')"' &&
      scp -p myfile.ext [email protected]:/bar/baz
      

      Você poderia usar mvem vez de cpse preferir, mas isso perderia todas as permissões não padrão e links de arquivo físicos no arquivo de destino verdadeiro.

    A rsyncopção é mais limpa, mas nem sempre está instalada.

    • 6
  2. ilkkachu
    2017-12-14T03:49:03+08:002017-12-14T03:49:03+08:00

    Tem que ser scp? Não acho que ele possa renomear arquivos para você (além de copiar de remoto para remoto, mas nunca tive certeza de como isso funciona).

    sftpseria bastante simples

    $ echo -e 'rename test test.old\nput test' | sftp user@hostname
    

    E você também pode fazer isso com ssh, embora observe que isso não copia nada além dos dados de test(sem permissões, carimbos de data e hora ...)

    $ cat test | ssh user@hostname 'mv test "test.$(date +%F_%T)"; cat > test'
    
    • 2
  3. aurelien
    2017-12-14T05:17:49+08:002017-12-14T05:17:49+08:00

    Você pode usarmirrordir

    Mirror ~/scripts to ~/scripts.backup:
    $ mkdir ~/scripts.backup
    $ mirrordir -v ~/scripts ~/scripts.backup
    
    If you rerun mirrordir again, only the updated files are copied.
    
    You can mirroring FTP sites:
    $ mirrordir -v ftp://ftp.nixcraft.in/pub /home/backup/nixcraft.in/ftp/pub
    
    mirrordir offers tons of option, refer mirrordir man page for more examples and options:
    $ man mirrordir
    
    • 1

relate perguntas

  • Subtraindo a mesma coluna entre duas linhas no awk

  • Um script que imprime as linhas de um arquivo com seu comprimento [fechado]

  • exportar variáveis ​​​​env programaticamente, via stdout do comando [duplicado]

  • Dividir por delimitador e concatenar problema de string

  • MySQL Select com função IN () com array bash

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve