Kesalahan menggunakan SCP: “not a regular file”

73

Saya telah mencari beberapa saat dan saya tidak dapat menemukan definisi file biasa. Jalur saya bersifat permanen (saya mulai dari /) dan saya terhubung ke

scp root@IP: /path/to/picture.jpg

Menghasilkan pertanyaan untuk kata sandi dan kemudian ...

scp: .: not a regular file
JeffM
sumber

Jawaban:

59

File biasa adalah file yang bukan direktori atau jenis file "khusus" yang lebih eksotis seperti pipa bernama, perangkat, soket, pintu, dll. Tautan simbolik bukan file biasa juga, tetapi mereka berperilaku seperti target mereka ketika itu aplikasi sedang mengakses konten file.

Anda lulus root@IP:sebagai sumber salinan dan /path/to/picture.jpgsebagai tujuan. Sumbernya adalah direktori home pengguna rootpada mesin IP. Ini berguna sebagai tujuan, tetapi bukan sebagai sumber. Apa yang Anda ketikkan harus menyalin direktori ke file; scptidak dapat menyalin direktori kecuali jika Anda meminta salinan rekursif dengan -ropsi (dan itu akan menolak untuk menimpa file yang ada dengan direktori bahkan dengan -r, tetapi itu diam-diam akan menimpa file biasa jika sumbernya adalah file biasa).

Jika /path/to/picture.jpgpath pada mesin remote dari file yang ingin Anda salin, Anda harus menempelkan nama file ke spesifikasi host. Itu titik dua :yang memisahkan nama host dari jalur jauh. Anda juga harus menentukan tujuan.

scp root@IP:/path/to/picture.jpg /some/destination

Jika Anda ingin menyalin file lokal /path/to/picture.jpgke host jarak jauh, Anda perlu menukar argumen. Perintah salin Unix menempatkan sumber (s) pertama dan tujuan terakhir.

scp /path/to/picture.jpg root@IP:

Jika Anda ingin menyalin file jarak jauh /path/to/picture.jpgke lokasi yang sama secara lokal, Anda perlu mengulangi path. Anda dapat meminta shell Anda melakukan pengulangan untuk Anda (kurang mengetik, kurang mudah dibaca).

scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg
Gilles 'SANGAT berhenti menjadi jahat'
sumber
2
pastikan tidak ada spasi antara nama host dan file
chris
Saya merasa sangat konyol setelah membaca ini. sumber tujuan! Duh!
Chaim Eliyah
112

Saat menyalin direktori, Anda harus menggunakan -ropsi:

scp -r root@IP:/path/to/file /path/to/filedestination
pengguna48435
sumber
1
Meskipun jawaban yang diterima secara teknis menjawab pertanyaan yang sebenarnya, jawaban ini kemungkinan besar adalah apa yang dicari orang yang datang ke halaman ini.
cgnorthcutt
4

masalah sintaksis - menghapus spasi putih di antara

root @ IP:

dan

/ jalan

lurker
sumber
Tapi, kamu tidak punya target scplagi.
Bernhard
ya. saya menekan enter terlalu cepat dan kekurangan rep untuk memperbaikinya. Terkejut saya bahkan bisa berkomentar di sini. tepuk tangan.
lurker
2
Saya pikir Anda selalu dapat mengomentari kontribusi Anda sendiri, dan saya pikir Anda juga dapat selalu mengeditnya?
Bernhard
Saya tidak not a regular file
mengira
@hisi gunakan -rsebagai argumen scp.
Ankur Loriya
2

scp root@IP:/path/to/file /path/to/filedestination

Perintah di atas menyalin file dari server jauh ke komputer Anda. Jika Anda mengetik saja, scp root@IP:ia akan mencoba menyalin direktori home root (pengguna scp home .).

Jadi, Anda perlu memberikan jalur yang tepat ke file

Manula Waidyanatha
sumber
Ini berhasil. Terima kasih banyak, teman. Teruskan!
JeffM
2

Anda mendapatkan kesalahan itu karena Anda mencoba untuk menyalin folder dan bukan file dan karenanya Anda harus menyalin file Anda secara rekursif dengan menggunakan -ropsi

Gunakan perintah di bawah ini saat menyalin file dari mesin jarak jauh ke mesin lokal

scp -r root@RemoteIP:/path/to/file /path/to/filedestination

ATAU

Saat menyalin file dari mesin lokal ke mesin jarak jauh

scp -r /path/to/file root@RemoteIP:/path/to/filedestination
Yogesh Darji
sumber
0
scp root@IP:/path/to/*.jpg  /path/to/filedestination/

Ini akan berfungsi (setidaknya di Mac saya)

pengguna253616
sumber