Bagaimana cara menyalin file dengan scp dengan karakter khusus?


9

Saya mencoba menyalin file yang memiliki titik dua dan titik, misalnya, dengan:

scp "test.json-2014-08-07T11:17:58.662378" remote:tmp/

scp test.json-2014-08-07T11\:17\:58.662378 remote:tmp/

dan kombinasi dengan file:

scp "file:///home/.../test.json-2014-08-07T11:17:58.662378" remote:tmp/

Dugaan saya adalah scp mencoba menafsirkan bagian file sebagai server dan / atau nomor port. Bagaimana saya menghindarinya?

Jika saya mengganti nama file untuk test.json maka scp test.json remote:tmp/berfungsi dengan baik, tetapi bahkan tidak scp test*62378 remote:tmp/berfungsi.


Biarkan saya perhatikan bahwa beberapa "solusi" yang jelas adalah mengubah nama file, menyalinnya, dan mengganti nama kembali di server jauh.
Finn Årup Nielsen

Penjelasan mengapa gumpalan ( *), tidak berfungsi. Ini dilakukan di shell, jadi teks (argumen) yang sama akan diteruskan ke scp. Anda perlu mengubah teks (argumen) yang diteruskan ke scp. (lihat jawaban di bawah, untuk apa argumen teks harus diubah.)
ctrl-alt-delor

Perlu dicatat bahwa itu :adalah karakter nama file ilegal di OSX, jadi jika Anda perlu mentransfer file-file ini ada sesuatu yang perlu diingat.
Daenyth

Dalam cygwin, jika nama file dimulai dengan tanda hubung, Anda dapat mengawali file dengan tanda hubung ganda misalnyascp -- -1.JvSbrpchxuk.png user@example.com:/tmp
Shane Rowatt

Jawaban:


19

Gunakan ./sebelum nama file Anda:

scp ./test.json-2014-08-07T11:17:58.662378 remote:tmp/

Yang membuat scptahu itu file. Tanpa itu, scpmengira itu nama host karena titik dua.


4

Gunakan jalan dengan mendahului ./dan keluar dari jalan Anda :. Cyberiti memiliki lebih banyak info . Contoh:

scp ./file\:with\:colons.txt remoteserver:

2
Anda tidak perlu melarikan diri dari usus besar.
cuonglm

Pelarian Anda :adalah pada level shell, bukan pada level scp.
ctrl-alt-delor

Ya, Anda harus melarikan diri. Setidaknya di kulitku aku butuh pelarian.
Finn Årup Nielsen

@ FinnÅrupNielsen: Apa cangkang Anda? Anda tidak perlu keluar dari titik dua, shell tambahkan backslash untuk Anda. Anda dapat menghapusnya dan melihatnya masih berfungsi.
cuonglm

Saya salah. scp ./test.json-2014-08-07T11:17:58.662378 remote:tmp/benar-benar bekerja! Maaf.
Finn Årup Nielsen

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.