fichiers scp et supprimer des fichiers sur le répertoire distant [fermé]

18

Je suis un noix unix, alors soyez patient :-)

J'ai un script qui scps un tas de fichiers vers un autre serveur.

Supposons qu'ils soient z1.foo, z2.foo etc. Ce que je veux faire, c'est scper et supprimer des fichiers de plus de 5 jours sur le serveur de destination.

Comment supprimer en toute sécurité des fichiers de la destination?

Merci.

Kapsh
la source
"écraser les fichiers à destination"? Si vous scp des fichiers qui existent déjà sur le répertoire distant, ils seront écrasés automatiquement
Aki
sa bonne idée, de supprimer les fichiers avec un script shell localement, ce qui signifie que vous êtes des fichiers SCPing quand vous le souhaitez. mais il y a un script shell qui s'exécute quotidiennement pour supprimer les fichiers sous un certain dossier, où vous gardez files.command sera quelque chose comme:find /path/to/files* -mtime +5 -exec rm {} \;
Zareh Kasparian

Réponses:

21

Pour supprimer des fichiers de manière non interactive:

ssh hostname "rm -f z100.foo z200.foo"
Warner
la source
1
quel est le nom d'hôte? est-ce servername@ipaddress:path/to/dir/?
HattrickNZ
1
le nom d'hôte est juste user:password@ipaddressou user:password@dnsnameou vous pouvez omettre le mot de passe s'il n'est pas nécessaire. Je viens de l'essayer avec root@somednsnameet cela fonctionne bien. La path/to/dirpartie que j'ai mise dans la commande rm, comme chemin absolu, pour s'assurer qu'elle est correcte.
AsGoodAsItGets
6

Vous pouvez accomplir les deux tâches dans la même commande en utilisant l' --deleteindicateur to 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

L' --deleteoption supprime des fichiers du répertoire de destination qui n'existent pas sur la source. Il existe certains choix concernant le moment où les fichiers sont supprimés et comment gérer les fichiers exclus.

> 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

La page de manuel contient également cet avertissement:

Cette option peut être dangereuse si elle n'est pas utilisée correctement! C'est une très bonne idée de commencer par utiliser le --dry-run option( -n) pour voir quels fichiers seront supprimés pour vous assurer que les fichiers importants ne sont pas répertoriés.

Ladadadada
la source
2

Si vous souhaitez définir le nom d'utilisateur et le numéro de port, vous pouvez procéder comme suit:

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