arquivos scp e excluir arquivos no diretório remoto [fechado]

18

Eu sou um noob unix, então por favor seja paciente :-)

Eu tenho um script que scps um monte de arquivos para outro servidor.

Suponha que eles sejam z1.foo, z2.foo etc. O que eu quero fazer é scp e excluir arquivos com mais de 5 dias no servidor de destino.

Como faço para excluir com segurança arquivos do destino?

Obrigado.

Kapsh
fonte
"sobrescrever os arquivos no destino"? Se você scp arquivos que já existem no dir remoto que vai ser substituído automaticamente
Aki
é uma boa idéia, excluir os arquivos com um script de shell localmente, significando que você está executando os arquivos SCP sempre que quiser. mas há um script de shell que é executado diariamente para remover os arquivos em uma determinada pasta, onde você mantém o arquivo files.command será algo como:find /path/to/files* -mtime +5 -exec rm {} \;
Zareh Kasparian

Respostas:

21

Para remover arquivos de forma não interativa:

ssh hostname "rm -f z100.foo z200.foo"
Warner
fonte
1
o que é hostname? é isso servername@ipaddress:path/to/dir/?
HattrickNZ
1
hostname é apenas user:password@ipaddressou user:password@dnsnamevocê pode omitir a senha, se não for necessário. Eu apenas tentei root@somednsnamee funciona bem. A path/to/dirparte que coloquei no comando rm, como um caminho absoluto, para garantir que esteja correta.
AsGoodAsItGets
6

Você pode realizar as duas tarefas no mesmo comando usando o --deletesinalizador para rsync.

> ls -1 localdir/
a.foo
b.foo

> ssh remote-host "ls -1 remotedir/"
c.foo

> rsync -a --delete localdir/ remote-host:remotedir/

> ssh remote-host "ls -1 remotedir/"
a.foo
b.foo

A --deleteopção remove arquivos do diretório de destino que não existem na fonte. Existem algumas opções sobre quando os arquivos são excluídos e como lidar com arquivos excluídos.

> man rysnc
...
--delete                delete extraneous files from dest dirs
--delete-before         receiver deletes before transfer (default)
--delete-during         receiver deletes during xfer, not before
--delete-after          receiver deletes after transfer, not before
--delete-excluded       also delete excluded files from dest dirs

A página do manual também contém este aviso:

Esta opção pode ser perigosa se usada incorretamente! É uma idéia muito boa executar primeiro usando o --dry-run option( -n) para ver quais arquivos serão excluídos para garantir que arquivos importantes não estejam listados.

Ladadadada
fonte
2

Se você deseja definir o nome de usuário e o número da porta, faça o seguinte:

ssh [email protected] -p22 "rm -rf /home/amzad/test.php"
m82amjad
fonte