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.

Finn Årup Nielsen
sumber
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 [email protected]:/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.

cuonglm
sumber
4

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

scp ./file\:with\:colons.txt remoteserver:
Karlo
sumber
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