J'ai besoin de déplacer tous les fichiers de actuel_path sur actuel_path/DestinationFolder.
La version de SFTP que j'utilise est la suivante: version 2 de protocole SFTP
Les commandes disponibles sont:
sftp> help
Available commands:
cd path Change remote directory to 'path'
lcd path Change local directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to 'mode'
chown own path Change owner of file 'path' to 'own'
help Display this help text
get remote-path [local-path] Download file
lls [ls-options [path]] Display local directory listing
ln oldpath newpath Symlink remote file
lmkdir path Create local directory
lpwd Print local working directory
ls [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
put local-path [remote-path] Upload file
pwd Display remote working directory
exit Quit sftp
quit Quit sftp
rename oldpath newpath Rename remote file
rmdir path Remove remote directory
rm path Delete remote file
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local Shell
! Escape to local Shell
? Synonym for help
Je n'ai pas mv commande. J'ai essayé RNFT et n'a pas fonctionné.
Maintenant, je peux utiliser Rename:
rename current_path/myFile.txt current_path/DestinationFolder/myFile.txt
et ça va bien. Mais j'ai besoin de bouger tout (ou plusieurs) des fichiers. Ce qui suit n'a pas fonctionné:
rename current_path/* current_path/DestinationFolder/
Couldn't rename file "current_path/*" to "current_path/DestinationFolder/": Bad message
N'ayez pas accès à SSH Donc, je ne peux donc pas faire des choses comme Echo "SSH Login @ Server MV * Current_Path/DestinationFolder /"
Je ne devrais pas gâcher avec ce serveur c'est: pas de scripts, aucune activité, etc. Je suis très limité.
Pourriez-vous me recommander un moyen de résoudre ce problème, s'il vous plaît ??
[~ # ~] note [~ # ~ ~]: Ceci est à Solaris.
je suis d'accord avec CJC. Si vous êtes vraiment limité au-dessus de la commande qui vous permettra de télécharger des fichiers est placée à la page locale [Remote-Chemin] et SCP IT Retour. Bon lien ici aussi.
J'utiliserais quelque chose comme winscp cependant, rend les choses beaucoup plus faciles.
sftp> help put
USAGE: put local-path [remote-path] [-bg | -fg] [-s] [-o] [-r] [-b | -lf]
DESCRIPTION: Upload file.
PARAMETERS:
-bg Start (queue) transfer in background.
-fg Start transfer in foreground.
-s Include subdirectories (recursive).
-r Force existing incomplete file to be resumed.
-o Force existing file to be overwritten.
-b Upload all files as binary; no conversions.
-lf Use auto detection upload mode. Text files are uploaded
in Unix format, with LF as the line delimiter.
NOTES:
- If both '-r' and '-o' are specified, resume is tried first,
and if that fails, overwrite is used.
- '-std' and '-t' transfer mode options are also available
when SFTP version 4 or higher is in use.
Openssh sftp
n'est pas un client très puissant pour de telles tâches. Vous devriez l'exécuter deux fois. Commencez par collecter la liste des fichiers, utilisez la liste pour générer une liste de commandes et exécuter celles de la deuxième série.
Quelque chose comme ça:
files=`sftp -b - [email protected] <<EOF
cd /source/folder
ls
EOF`
files=`echo $files|sed "s/.*sftp> ls//"`
(
echo cd /source/folder
for file in $files; do
echo get $file
echo rename $file /destination/folder/$file
done
) | sftp -b - [email protected]
Avant d'exécuter le script sur les fichiers de production, je vous suggère, vous émettez d'abord la liste de commandes générée à un fichier à vérifier si les résultats sont comme prévu.
Il suffit de remplacer la dernière ligne avec:
) > commands.txt