10 votes

Est-il possible avec SCP de ne copier que les fichiers qui correspondent à une certaine date ?

Est-il possible que SCP filtre les fichiers qu'il copie par date, par exemple, si vous voulez copier tous les fichiers créés le 29/12 et ignorer les autres?

7voto

Jon Raphaelson Points 874

Vous ne pouvez pas le faire directement avec scp. La manière Unix consiste à combiner des outils, vous voulez la commande find.

Voici un exemple de recherche de fichier avec une date donnée:

touch --date "2007-01-01" start
touch --date "2008-01-01" end
find -type f -newer start -not -newer end

J'ai pris cet exemple d'ici: http://www.cyberciti.biz/faq/linux-unix-osxfind-files-by-date/

Pour alimenter ceci dans scp, vous pourriez faire ceci:

find -type f -newer start -not -newer end -exec scp {} dest: \;

Cela appellera scp une fois par fichier, ce qui pourrait être lent car il doit établir la connexion à chaque fois. Si vous n'avez qu'une poignée de fichiers et qu'il n'y a pas d'espaces dans les noms, vous pouvez faire ceci:

scp `find -type f -newer start -not -newer end` dest:

0voto

murmaiderer Points 21

Une alternative efficace (d'une seule ligne !) est donnée ici, qui copie à travers un canal SSH en utilisant 'cpio' en mode copie. Vous pouvez personnaliser les arguments de recherche selon vos besoins, en utilisant peut-être les tests de temps/min/nouveauté.

Pour obtenir votre test de date et heure exact, créez un fichier fictif avec l'heure et la date correctes sur votre système source, utilisez le test -newer de find, ou utilisez le test -newerXY de la page de manuel. Voir https://linux.die.net/man/1/find

La sortie de la commande find exécutée sur le système distant est renvoyée de manière sécurisée sur le système local via ssh, et enregistrée.

Cela semble faire tout ce dont vous avez besoin, mais n'utilise pas 'scp' - ce qui pourrait affecter votre notation. Mais il utilise une combinaison d'outils Unix - c'est l'approche Unix !

Quoi qu'il en soit, scp est un raccourci pour les cas les plus courants, cette approche est plus puissante, lorsque la filtration des fichiers est nécessaire.

ssh nomutilisateur@adresse-ip '(cd /chemin/vers/repertoiresource; find . -print | cpio -oBav -Hcrc)' | ( cd /chemin/vers/repertoircible && cpio -ivumd )

https://askubuntu.com/questions/1080590/how-to-use-find-in-scp-command

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X