J'essaie de copier les fichiers modifiés dans GoDaddy via SSH. Godaddy est terrible et ils ne permettent bien sûr pas de rsync. Je peux utiliser scp, mais je ne veux vraiment que copier les fichiers modifiés. Je ne pense pas que cela soit possible, alors je me demandais si je pourrais peut-être scp uniquement tous les fichiers php.
Il y a beaucoup de sous-répertoires, cependant, je dois donc utiliser l'option -r.
Puis-je utiliser scp pour copier tous les fichiers avec l'extension php
, récursivement? comme ça:
scp -r -name "*php" /local/html/ user@server:/home/html/
(ne marche pas)
RÉSULTAT DÉSIRÉ
//on local machine $ find ./source source / 1.php source / 2.php source / sous source / sub / 3.php source / sub / 4.php source / sub / DONT-copy.txt source / sub / DONT-copy.png source / sub / sub2 source / sub / sub2 / 5.php source / sub / sub2 / 6.php // commande pour copier les fichiers $ [commande scp ici] // sur le serveur distant $ find ./destination destination / 1.php destination / 2.php destination / sous destination / sub / 3.php destination / sub / 4.php destination / sub / sub2 destination / sub / sub2 / 5.php destination / sub / sub2 / 6.php
CELA NE FONCTIONNE PAS
//on local machine $ find ./source source / 1.php source / 2.php source / sous source / sub / 3.php source / sub / 4.php source / sub / DONT-copy.txt source / sub / DONT-copy.png source / sub / sub2 source / sub / sub2 / 5.php source / sub / sub2 / 6.php // commande pour copier les fichiers $ cd source; scp -r * .php utilisateur @ distant: / destination // sur le serveur distant $ find ./destination destination / 1.php destination / 2.php
Peut-être pourrions-nous essayer d’utiliser find, mais je suis sûr que cela ne fonctionnera pas tel quel :
find ./source -name "*.php" -exec scp {} user@remote:{} \;
Cela ne fonctionnera pas car je ne pense pas que vous puissiez utiliser plusieurs {}
opérateurs à trouver.
En outre, il peut être difficile d’aligner les chemins sur le serveur distant, par exemple si find retournait /users/johndoe/documents/source/1.php
et vous vouliez que ça finisse à /home/jane/www/destination/1.php
sur le serveur distant.
cat phpfiles.tar | ssh user@remote "cd destination && tar cf -"
transférer tous vos fichiers en une seule fois.{}
des jetons? J'ai l'air prometteur (vous pouvez utiliser plusieurs{}
), vous devez peut-être préciseruser@remote:~/{}
comme destination.Réponses:
voici ce que je fais quand un hôte ne permet que de pousser des choses, et pas de rsync:
rsync
pour pousser à ce répertoire d'ombre, et capturer la sortie (il y a--log-file
si vous voulez le scripter)rsync
sortie, déterminez les fichiers que vous devez supprimer, ou pousser et faire une listela source
Tu ne peux pas faire
scp -r *.php destination
?la source
/local/html
? tous les fichiers * .php? seulement changé*.php
des dossiers? qu'est-ce que l'argument-name
signifier?-name
est le paramètre que rsync utilise pour filtrer uniquement les fichiers php. Je voudrais idéalement copier uniquement les fichiers modifiés (comme rsync), mais comme rsync n'est pas disponible, j'aimerais simplement copier les fichiers php uniquement (pour économiser la bande passante). Cela a-t-il du sens? Je suppose que je pourrais faire unfind -exec scp
mais j’aurais besoin de saisir le basepath et d’être bien ajouté à l’argument de destination semble juste qu'il devrait y avoir un moyen facile de le faire.scp -r utilisateur @ ip: / data / files / *. php / tmp / files /
la source