¿Por qué scp dice "No existe tal archivo"?

¿Por qué scp dice "No existe tal archivo"?

Tengo un script bash que se utiliza scppara 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 scpcomando 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

información relacionada