แถบชื่อไฟล์ SCP สมบูรณ์


13

ฉันใช้ SCP เป็นประจำเพื่อย้ายไฟล์ระหว่างเซิร์ฟเวอร์และฉันได้ยินข่าวลือว่าคุณสามารถใช้การกรอกข้อมูลแท็บบนเซิร์ฟเวอร์ระยะไกลหากคุณใช้กุญแจสาธารณะ แต่จนถึงตอนนี้ฉันก็ไม่มีโชค

สิ่งที่ฉันพยายามทำให้สำเร็จคือ:

scp -r remote.ip.address:/remote/dir/folder<TAB> /local/destiation/

lsบนเซิร์ฟเวอร์ระยะไกลของ/dir/จะเปิดเผย 3 โฟลเดอร์:

/remote/dir/folder_1
/remote/dir/folder_2
/remote/dir/folder_3

ฉันต้องการให้ SCP เปิดเผยว่าโฟลเดอร์ใดตรงกัน (ถ้ามี) เช่นเดียวกับการทำพา ธ ปกติเมื่อใช้ระบบไฟล์ในเครื่อง ความสมบูรณ์ของแท็บทำงานบนพา ธ โลคัลในscpบรรทัดคำสั่ง แต่ฉันสังเกตว่าเมื่อพา ธ ของเครื่องรีโมตตรงกับโลคัล (เช่น: "~ /") มันจะทำ / แนะนำไฟล์ / โฟลเดอร์จากระบบไฟล์ในระบบแทน กว่าระยะไกล

การเรียกใช้งานต่อไปนี้ใช้สำหรับล็อกอินโดยไม่ต้องใช้รหัสผ่าน

`ssh remote.ip.address`

... ดังนั้นฉันจึงรู้ว่ามีการตั้งค่าคีย์อย่างถูกต้อง มีความคิดเห็นเกี่ยวกับวิธีการทำงานนี้หรือไม่?


เพิ่งใช้สิ่งนี้ - omgbbq
William Entriken

คำตอบ:


16

คุณใช้เปลือกไหน หากคุณกำลังใช้ bash คุณอาจต้องเปิดใช้งานการบรรลุ "ขั้นสูง" ใน bash ...

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

ใน ~ / .bashrc ของคุณ

บน OSX คุณสามารถทำได้:

$ sudo port install bash-completion

ลงใน ~ / .profile ของคุณเพิ่ม:

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

ฉันใช้ OSX เป็นเวิร์กสเตชันไฟล์นั้นไม่มีอยู่ อย่างไรก็ตามฉันสมมติว่ามีการรบกวนฉันจำเป็นต้องติดตั้งแพคเกจทุบตีเสร็จสิ้นเพื่อให้ทำงานได้หรือไม่

ฉันจะปรับปรุงคำตอบของฉัน ..
rkthkr

ฉันเพิ่งจะทำตามขั้นตอนเหล่านั้นด้วยตัวเอง ขอบคุณเพื่อน!

ไม่มีปัญหายินดีให้ความช่วยเหลือ!
rkthkr

1
แน่นอนส่วนการติดตั้งพอร์ตสำหรับ OS X จะใช้ได้เฉพาะในกรณีที่คุณติดตั้งแพ็คเกจ MacPorts (www.macports.org) และฉันคิดว่ามีแพ็คเกจให้ใช้ถ้าคุณควรใช้ fink แทน MacPorts
สเวน

2

หากใครต้องการทำเช่นนี้สำหรับ Mac OSX Mountain Lion ด้วยวิธีของ rkthkr พวกเขาจะต้องติดตั้ง Mac Ports ( http://www.macports.org/install.php ) ก่อนเรียกใช้คำสั่งที่เขากล่าวถึง:

$ sudo port install bash-completion

จากนั้นกำหนดค่าแอปเทอร์มินัลตามคำแนะนำเหล่านี้ที่นี่: https://trac.macports.org/wiki/howto/bash-completion


เมื่อคุณมีชื่อเสียงมากพอที่จะแสดงความคิดเห็นส่วนเพิ่มเติมของคำตอบที่มีอยู่มักจะทำงานได้ดีขึ้นกับเหล่านั้น (ถ้าคุณจะไม่แก้ไขคำตอบ)
แอนดรู B

ขอบคุณ นั่นคือสิ่งที่ฉันต้องการจะทำ แต่ตามที่คุณพูดถึงฉันไม่มีตัวแทนเพียงพอที่จะทำเช่นนั้น
Shawn Conn

0

อีกวิธีการแก้ปัญหาอาจจะง่ายคือการใช้sshfs

นี่เป็นไคลเอนต์ระบบไฟล์ที่ใช้โปรโตคอลการถ่ายโอนไฟล์ SSH เนื่องจากเซิร์ฟเวอร์ SSH ส่วนใหญ่สนับสนุนโปรโตคอลนี้อยู่แล้วจึงเป็นเรื่องง่ายในการตั้งค่า: ด้านเซิร์ฟเวอร์ไม่มีอะไรให้ทำ ในฝั่งไคลเอ็นต์การติดตั้งระบบไฟล์นั้นง่ายเหมือนการล็อกอินเข้าสู่เซิร์ฟเวอร์ด้วย ssh

มันเป็นระบบไฟล์แบบฟิวส์ซึ่งเชื่อมโยงโฟลเดอร์ระยะไกลของคุณไปยังโลคอลหนึ่ง ๆ ภายใต้ประทุน scp จะใช้ แต่คุณสามารถใช้งานcpคำสั่งเช่นเดียวกับการคัดลอกไฟล์ในเครื่องท้องถิ่นของคุณ ดังนั้นการเติมแท็บจะทำงานโดยอัตโนมัติ! sshfsมีให้สำหรับการแจกแจงส่วนใหญ่เช่น do sudo apt-get install sshfs(สิ่งนี้จะโหลดfuseโมดูลเคอร์เนลด้วย)

เริ่มเช่นนี้

$ sudo mkdir /mnt/server1
$ sudo chown local-username /mnt/server1
$ sshfs remote-username@server1.example.com:/home/remote-username /mnt/server1
$ ls /mnt/server1
 .. <bunch of files> ...
$ cp /mnt/server1/.bash<tab><tab>
.bash_history  .bash_logout   .bashrc
$ cp /mnt/server1/.bashrc .

0

ผมขอแนะนำให้ใช้yafc

รองรับการเติมชื่อไฟล์และมีคุณสมบัติที่มีประโยชน์อื่น ๆ เช่น (รับ / วาง / fxp / ls / rm ซ้ำ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.