ฉันจะคัดลอกไฟล์จากเซิร์ฟเวอร์ Google Cloud Compute ไปยังเครื่องท้องถิ่นของฉันได้อย่างไร


9

ฉันกำลังพยายามดาวน์โหลดไฟล์เซิร์ฟเวอร์ทั้งหมดจาก Google Cloud Compute (ใช้งาน Linux Debian) ฉันไม่คุ้นเคยอย่างยิ่งกับ SSH และ Google Cloud Compute โดยรวม ฉันต้องการคัดลอกไฟล์ทั้งหมด (คล้ายกับคำขอดึง git) หรือสร้าง zip และดาวน์โหลด ในระยะสั้นฉันต้องคัดลอกไฟล์ทั้งหมดในเซิร์ฟเวอร์ Google Cloud ลบไปยังเครื่องท้องถิ่นของฉัน

ขอบคุณล่วงหน้า.


บางทีนี่อาจให้ตัวเลือกอื่นสำหรับคุณ stackoverflow.com/a/27792823/2406499
145422

คำตอบ:


10

ลองใช้gcloud compute scp:

gcloud compute scp 
  [[USER@]INSTANCE:]SRC [[[USER@]INSTANCE:]SRC …]
  [[USER@]INSTANCE:]DEST
  [--compress] [--dry-run] [--force-key-file-overwrite]
  [--plain] [--port=PORT] [--recurse] [--scp-flag=SCP_FLAG]
  [--ssh-key-file=SSH_KEY_FILE]
  [--strict-host-key-checking=STRICT_HOST_KEY_CHECKING]
  [--zone=ZONE]
  [GCLOUD_WIDE_FLAG …]
  [-h]

เช่น,

$ gcloud compute scp \
    my-instance-1:~/file-1 \
    my-instance-2:~/file-2 \
    ~/my-destination \
    --zone us-central2-a

คุณสามารถใช้ (ไม่ใช่ - gcloud) sftpหรือscp; ดูคำตอบ SO นี้สำหรับรายละเอียดเกี่ยวกับอาร์กิวเมนต์บรรทัดคำสั่งที่คุณต้องระบุซึ่งฉันจะอ้างถึงที่นี่เพื่อความง่าย:

sftp -o IdentityFile ~/.ssh/google_compute_engine user@host

หากต้องการใช้เครื่องมือ SFTP อื่น ๆ ให้ระบุพา ธ ไปยังคีย์ส่วนตัว SSH ในทำนองเดียวกันและจะสามารถเชื่อมต่อกับอินสแตนซ์ได้ อย่างไรก็ตามในกรณีที่gcloudสามารถแก้ไขชื่อโฮสต์ให้เป็น IP สาธารณะได้ สำหรับเครื่องมืออื่น ๆ ทั้งหมดคุณจะต้องค้นหา IP ด้วยตนเองและระบุที่อยู่ IP โดยตรง


น่ากลัว มีวิธีลบไฟล์และลบไฟล์เมื่อมีการคัดลอกหรือไม่
MCllorf

@ MCllorf - ฉันไม่แน่ใจว่าฉันทำตามสิ่งที่คุณขอคุณช่วยกรุณาเปิดคำถามอีกครั้งพร้อมรายละเอียดเพิ่มเติมและกรณีการใช้งานหรือเป้าหมายที่คุณพยายามจะทำ?
Misha Brukman

1
ขออภัยฉันสามารถใช้ถ้อยคำที่ดีกว่าได้อย่างแน่นอน เป้าหมายของฉันคือการคัดลอกไฟล์ไปที่อื่นแล้วลบต้นฉบับเพื่อไม่ให้ใช้พื้นที่ไม่จำเป็น ฉันคิดแล้วว่ามัน :) ขอบคุณ!
MCllorf

4

( gcloud compute copy-filesเลิกใช้แล้วในขณะนี้จึงgcloud compute scpขอแนะนำ)

ใช้gcloud compute scpดังต่อไปนี้:

gcloud compute scp [[USER@]INSTANCE:]SRC [[[USER@]INSTANCE:]SRC …]
[[USER@]INSTANCE:]DEST [--compress] [--dry-run] [--force-key-file-overwrite]
[--plain] [--port=PORT] [--recurse] [--scp-flag=SCP_FLAG] 
[--ssh-key-file=SSH_KEY_FILE] [--strict-host-key-checking=STRICT_HOST_KEY_CHECKING]
[--zone=ZONE] [GCLOUD_WIDE_FLAG …]

ตัวอย่างเช่น:

$ gcloud compute scp example-instance:~/REMOTE-DIR ~/LOCAL-DIR \
      --zone us-central1-a

หากโซนถูกตั้งค่าไว้แล้ว (ใช้gcloud config set compute/zone ZONEหรือผ่านตัวแปรสภาพแวดล้อมคุณไม่จำเป็นต้องระบุโซนด้านบน)

นอกจากนี้gcloud compute scpจะไม่คัดลอกซ้ำโดยค่าเริ่มต้น เราจำเป็นต้องใช้การ--recurseตั้งค่าสถานะสำหรับมัน

ดูเอกสารรายละเอียดที่นี่


2

บางทีคุณสามารถใช้ SFTP (google ใช้ Filezilla ในเอกสารของพวกเขา) ฉันไม่ได้ดีเกินไปกับ CLI และด้วยเหตุนี้เช่นตัวเลือก GUI Filezilla และข้อเสนออื่น ๆ

นี่คือขั้นตอนในระดับสูง:

  1. ติดตั้งและเรียกใช้ gcloud SDK ( $ gcloud init)
  2. สร้างคีย์ SSH ( $ gcloud compute ssh)
  3. ติดตั้งไคลเอนต์ FTP (ติดตั้งและเพิ่มไฟล์คีย์)
  4. เชื่อมต่อกับ VM โดยใช้ไคลเอ็นต์ SFTP

และนี่คือเอกสารจาก Google

นอกจากนี้ฉันได้บันทึกสิ่งนี้แล้วอาจเป็นประโยชน์:

https://www.youtube.com/watch?v=9ssfE6ODpak

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