Tengo un script bash que se utiliza scp
para copiar un archivo de mi máquina a otra. El script continúa saliendo después de ingresar la contraseña SSH con el error:
<filename>: No such file or directory
Sin embargo, en el script, verifico el archivo y está bien. Lo hice set -o verbose
al principio y esto es lo que obtengo al final del guión:
scp /Volumes/FX4\ HDD/Users/matthewdavies/Downloads/NCIS.S11E01.HDTV.x264-LOL.mp4 [email protected]:"/media/3TB/TV\ Shows/NCIS"
[email protected]'s password:
/Volumes/FX4\ HDD/Users/matthewdavies/Downloads/NCIS.S11E01.HDTV.x264-LOL.mp4: No such file or directory
Entonces, intenté ejecutar el scp
comando tal como salió y estuvo bien; lo copió. Que pasa???
Respuesta1
No estoy del todo seguro de lo que estás haciendo, pero cuando intento el comando que tienes en tu ejemplo me sale lo siguiente:
$ scp /home/saml/projects/Cooks.com\ -\ Recipe\ -\ Coconut\ Chicken.mht \
root@remotey:"/root/some spaced out file.mht"
scp: ambiguous target
Esto se debe a que estás citando la ruta de destino y también incluye barras invertidas que escapan de los espacios. Sin embargo, cuando el shell actual elimina las comillas dobles, también eliminará la barra invertida única, dejando la ruta de destino como una cadena desnuda con espacios. Debe realizar una de las siguientes acciones para anidarlo aún más, de modo que los espacios se escapen correctamente:
Ejemplos
método n.º 1: comillas dobles, comillas simples
$ scp /path/with\ spaces/file\ with\ spaces.txt \
user@remotey:"'/home/user/some spaced out file.txt'"
método n.º 2: comillas simples, comillas dobles
$ scp /path/with\ spaces/file\ with\ spaces.txt \
user@remotey:'"/home/user/some spaced out file.txt"'
método n.° 3: comillas simples, barra invertida
$ scp /path/with\ spaces/file\ with\ spaces.txt \
user@remotey:'/home/user/some\ spaced\ out\ file.txt'
Método n.º 4: comillas dobles y barra invertida
$ scp /path/with\ spaces/file\ with\ spaces.txt \
user@remotey:"/home/user/some\ spaced\ out\ file.txt"
Método n.° 5: barras invertidas triples
$ scp /path/with\ spaces/file\ with\ spaces.txt \
user@remotey:/home/user/some\\\ spaced\\\ out\\\ file.txt