SCP kullanırken hata: “normal bir dosya değil”


73

Bir süredir arama yapıyorum ve normal bir dosyanın tanımını bulamıyorum. Yolum kalıcıdır (başlıyorum /) ve bağlantı kuruyorum

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

Bir şifre için bir soruşturma sonuçları ve ardından ...

scp: .: not a regular file

Yanıtlar:


59

Düzenli bir dosya, bir dizin olmayan veya adlandırılmış yöneltmeler, aygıtlar, yuvalar, kapılar vb. Gibi daha egzotik türdeki “özel” dosyaların olmadığı bir dosyadır . Sembolik bağlantılar da normal dosyalar değildir, ancak hedefleri gibi davranırlar. Bir uygulama dosyanın içeriğine erişiyor.

root@IP:Kopyanın kaynağı ve /path/to/picture.jpghedef olarak geçtiniz . Kaynak, kullanıcının rootmakinedeki giriş dizinidir IP. Bu bir hedef olarak kullanışlıdır, fakat kaynak olarak kullanılamaz. Bir dizine dosya kopyalamak için ne yazdığınız gerekli; seçeneği scpolan özyinelemeli bir kopya istemediğiniz sürece bir dizini kopyalayamazsınız -r(ve bir dizinin bulunduğu varolan bir dosyanın üzerine yazmayı reddeder -r, ancak kaynak normal bir dosya olsaydı sessiz bir şekilde düzenli bir dosyanın üzerine yazardı).

/path/to/picture.jpgKopyalamak istediğiniz dosyanın uzak makinesindeki yol buysa , dosya adını ana bilgisayar belirtimine yapıştırmanız gerekir. :Ana bilgisayar adını uzak yoldan ayıran iki noktadır. Siz de bir hedef belirlemeniz gerekecek.

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

Yerel dosyayı /path/to/picture.jpguzak ana bilgisayara kopyalamak istiyorsanız , değişkenleri değiştirmeniz gerekir. Unix copy komutları, ilk önce kaynakları ve hedefi en son duruma getirir.

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

Uzak dosyayı /path/to/picture.jpgyerel olarak aynı konuma kopyalamak istiyorsanız yolu tekrarlamanız gerekir. Kabuğunuzun sizin için tekrarlama işlemini yapmasını sağlayabilirsiniz (daha az yazma, daha az okunabilirlik).

scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg

2
ana bilgisayar adı ve dosya arasında boşluk olmadığından emin olun
chris

Bunu okuduktan sonra kendimi çok aptal hissediyorum. kaynak, hedef! Yaa!
Chaim Eliyah,

112

Bir dizini kopyalarken, -rseçeneği kullanmalısınız :

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

1
Kabul edilen cevap asıl soruyu teknik olarak cevaplasa da, bu cevap büyük olasılıkla bu sayfaya gelen kişilerin aradığı şey.
cgnorthcutt

4

sözdizimi sorunu - arasındaki boşlukları kaldırın

Kök @ IP:

ve

/yol, yörünge


Ancak, o zaman scpartık bir hedefiniz yok.
Bernhard

Evet. Çok hızlı bir şekilde enter tuşuna bastım ve düzeltecek bir temsilci bulunmuyor. Burada yorum bile yapabilirim şaşırttı. şerefe.
lurker

2
Bence her zaman kendi katkıların için yorum yapabilirsin ve ben de onları her zaman düzenleyebileceğini düşündüm?
Bernhard

Bu hataya neden olabilecek hiçbir şey bilmiyorumnot a regular file
HISI

@hisi -r, scp argümanı olarak kullanın .
Ankur Loriya

2

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

Yukarıdaki komut bir dosyayı uzak sunucudan bilgisayarınıza kopyalar. Yalnızca yazarsanız scp root@IP:, root dizinini kopyalamaya çalışın (scp users home .).

Yani dosyanın tam yolunu belirtmeniz gerekir.


Bu çalıştı. Bir demet teşekkürler dostum. Aynen böyle devam!
JeffM

2

Bu hatayı alıyorsunuz çünkü bir klasörü kopyalamaya çalışıyorsunuz, dosyaya değil, bu nedenle dosyalarınızı yinelemeli olarak -rseçeneğini kullanarak kopyalamalısınız.

Dosyaları uzak makineden yerel makineye kopyalarken aşağıdaki komutu kullanın

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

VEYA

Dosyaları yerel makineden uzak makineye kopyalarken

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

0
scp root@IP:/path/to/*.jpg  /path/to/filedestination/

Bu işe yarayacak (en azından Mac'imde)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.