Memindahkan Fail dari Jauh ke Tempatan Menggunakan SCP

Memindahkan Fail dari Jauh ke Tempatan Menggunakan SCP
Shell

Menyalin Fail dengan Selamat: Panduan Menggunakan SCP

Secure Copy Protocol (SCP) ialah alat yang berkuasa untuk memindahkan fail dan direktori dengan selamat antara pelayan jauh dan mesin tempatan. Jika anda kerap menggunakan SSH untuk mengakses pelayan anda, mengetahui cara menggunakan SCP dengan berkesan boleh menyelaraskan aliran kerja anda, memastikan anda boleh menyalin fail penting dengan cepat dan selamat dari pelayan jauh anda ke sistem setempat anda.

Dalam panduan ini, kami akan membimbing anda melalui langkah-langkah untuk menyalin folder jauh bernama "foo" ke direktori tempatan anda di /home/user/Desktop. Sama ada anda menguruskan sandaran, menggunakan kod atau hanya perlu mengalihkan fail, memahami arahan SCP akan menjadikan tugas anda lebih mudah dan cekap.

Perintah Penerangan
scp -r Menyalin keseluruhan direktori dari jauh ke mesin tempatan dengan selamat.
paramiko.SFTPClient.from_transport() Mencipta klien SFTP daripada pengangkutan SSH sedia ada.
os.makedirs() Mencipta direktori secara rekursif, memastikan semua direktori peringkat pertengahan dibuat.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) Menambah kunci hos pelayan secara automatik tanpa menggesa, berguna untuk skrip.
scp.listdir_attr() Menyenaraikan atribut fail dalam direktori, membolehkan kefungsian salinan rekursif.
paramiko.S_ISDIR() Semak sama ada laluan yang diberikan ialah direktori, membantu dalam penyalinan rekursif.
scp.get() Menyalin fail dari pelayan jauh ke mesin tempatan.

Penjelasan Terperinci Skrip SCP

Contoh skrip pertama menunjukkan penggunaan scp -r arahan untuk menyalin direktori jauh ke mesin tempatan. The scp command, yang bermaksud Secure Copy Protocol, ialah alat baris arahan yang menggunakan SSH untuk memindahkan fail dengan selamat antara hos jauh dan mesin tempatan. The -r flag dalam arahan menentukan bahawa operasi harus rekursif, bermakna ia akan menyalin semua fail dan direktori dalam direktori yang ditentukan. Struktur arahan adalah mudah: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. di sini, user@remote_host menentukan pengguna jauh dan hos, dan /path/to/remote/folder dan /home/user/Desktop/ ialah laluan sumber dan destinasi, masing-masing.

Contoh kedua ialah skrip shell yang mengautomasikan proses SCP. Skrip ini mentakrifkan pembolehubah untuk pengguna jauh, hos dan laluan, menjadikannya mudah untuk digunakan semula dan diubah suai. Skrip menggunakan scp -r dalam skrip Bash untuk memindahkan fail, yang membantu dalam senario di mana pemindahan berulang diperlukan. Ia juga termasuk mesej pemberitahuan untuk memaklumkan pengguna apabila pemindahan selesai. Contoh ketiga menggunakan Python dengan perpustakaan Paramiko, yang amat berguna untuk aliran kerja yang lebih kompleks atau automatik. Skrip menyediakan klien SSH dan menggunakan paramiko.SFTPClient.from_transport() kaedah untuk mencipta sesi SFTP. Ia kemudian mentakrifkan fungsi untuk menyalin fail secara rekursif dari pelayan jauh ke direktori tempatan menggunakan scp.listdir_attr() dan paramiko.S_ISDIR() untuk membezakan antara fail dan direktori. Pendekatan ini bermanfaat bagi mereka yang lebih suka skrip dalam Python dan perlu menyepadukan fungsi pemindahan fail ke dalam skrip automasi yang lebih besar.

Menggunakan SCP untuk Memindahkan Fail dari Pelayan Jauh ke Mesin Tempatan

Skrip Shell untuk SCP

# Basic SCP command to copy a remote folder to a local directory
scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/

# Breakdown of the command:
# scp: invokes the SCP program
# -r: recursively copies entire directories
# user@remote_host:/path/to/remote/folder: specifies the user and path to the remote folder
# /home/user/Desktop/: specifies the local destination directory

# Example usage with real values:
scp -r user@example.com:/var/www/foo /home/user/Desktop/

Mengautomasikan Pemindahan SCP dengan Skrip Shell

Skrip Shell untuk Mengautomasikan SCP

#!/bin/bash
# This script automates the SCP process

# Variables
REMOTE_USER="user"
REMOTE_HOST="remote_host"
REMOTE_PATH="/path/to/remote/folder"
LOCAL_PATH="/home/user/Desktop/"

# Execute SCP command
scp -r ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH} ${LOCAL_PATH}

# Notify user of completion
echo "Files have been copied successfully from ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH} to ${LOCAL_PATH}"

Skrip Python untuk Pemindahan Fail SCP

Skrip Python Menggunakan Perpustakaan Paramiko

import paramiko
import os

# Establish SSH client
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('remote_host', username='user', password='password')

# SCP command
scp = paramiko.SFTPClient.from_transport(ssh.get_transport())

# Define remote and local paths
remote_path = '/path/to/remote/folder'
local_path = '/home/user/Desktop/'

# Function to recursively copy files
def recursive_copy(remote_path, local_path):
    os.makedirs(local_path, exist_ok=True)
    for item in scp.listdir_attr(remote_path):
        remote_item = remote_path + '/' + item.filename
        local_item = os.path.join(local_path, item.filename)
        if paramiko.S_ISDIR(item.st_mode):
            recursive_copy(remote_item, local_item)
        else:
            scp.get(remote_item, local_item)

# Start copy process
recursive_copy(remote_path, local_path)

# Close connections
scp.close()
ssh.close()
print(f"Files have been copied successfully from {remote_path} to {local_path}")

Penggunaan SCP Lanjutan: Petua dan Trik

Di luar penggunaan asas scp untuk menyalin fail dan direktori, terdapat beberapa teknik dan pilihan lanjutan yang boleh meningkatkan pengalaman pemindahan fail anda. Satu ciri berguna ialah keupayaan untuk mengehadkan lebar jalur yang digunakan semasa pemindahan, yang boleh membantu terutamanya apabila bekerja dengan sumber rangkaian terhad. Ini boleh dicapai dengan menggunakan -l pilihan diikuti dengan had lebar jalur dalam kilobit sesaat, contohnya, scp -r -l 1000 user@remote_host:/path/to/remote/folder /home/user/Desktop/. Pilihan lain yang berguna ialah -C flag, yang membolehkan pemampatan, berpotensi mempercepatkan pemindahan fail besar.

Keselamatan adalah satu lagi aspek kritikal yang perlu dipertimbangkan semasa menggunakan scp. manakala scp sememangnya menggunakan SSH untuk pemindahan selamat, terdapat langkah tambahan yang boleh anda ambil untuk meningkatkan keselamatan. Sebagai contoh, menggunakan kunci SSH untuk pengesahan dan bukannya kata laluan boleh meningkatkan keselamatan dan kemudahan dengan ketara. Selain itu, anda boleh menentukan port SSH yang berbeza menggunakan -P pilihan jika pelayan anda tidak menggunakan port lalai 22. Contohnya, scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ membolehkan anda menyambung ke pelayan yang menjalankan SSH pada port 2222.

Soalan dan Jawapan Lazim Mengenai SCP

  1. Bagaimanakah cara saya menyalin fail dari setempat ke jauh menggunakan SCP?
  2. Anda boleh gunakan scp local_file user@remote_host:/path/to/remote/directory.
  3. Bagaimanakah saya boleh menyemak kemajuan pemindahan SCP?
  4. Menggunakan -v pilihan untuk mendayakan mod verbose: scp -v -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  5. Bolehkah saya mengekalkan atribut fail semasa menggunakan SCP?
  6. Ya, gunakan -p pilihan untuk mengekalkan masa pengubahsuaian, masa akses dan mod: scp -p -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  7. Bagaimanakah cara saya menggunakan SCP dengan kunci SSH yang berbeza?
  8. Tentukan kunci SSH dengan -i pilihan: scp -i /path/to/key -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  9. Bagaimanakah saya mengendalikan pemindahan fail besar dengan SCP?
  10. Menggunakan -C pilihan untuk pemampatan dan -l pilihan untuk mengehadkan lebar jalur: scp -C -l 1000 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  11. Bagaimanakah cara saya memindahkan fail menggunakan SCP melalui port SSH yang berbeza?
  12. Menggunakan -P pilihan untuk menentukan port: scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  13. Bolehkah SCP mengendalikan pautan simbolik?
  14. Ya, yang -r pilihan akan menyalin pautan simbolik serta fail dan direktori.
  15. Apakah yang berlaku jika pemindahan SCP terganggu?
  16. Jalankan semula scp arahan untuk menyambung semula pemindahan; ia akan melangkau fail yang telah disalin.
  17. Bagaimanakah cara saya menggunakan SCP dengan kata laluan dalam skrip?
  18. Anda disyorkan untuk menggunakan kekunci SSH sebaliknya, tetapi anda boleh menggunakan alat seperti sshpass untuk pengesahan kata laluan dalam skrip.

Pemikiran Akhir tentang Penggunaan SCP

Memahami cara menggunakan SCP untuk memindahkan fail dan direktori daripada pelayan jauh ke mesin tempatan boleh meningkatkan kecekapan aliran kerja anda dengan ketara. Dengan menguasai kedua-dua arahan asas dan teknik lanjutan, anda boleh memastikan pemindahan data yang selamat dan cekap. Sama ada anda menyalin fail tunggal atau keseluruhan direktori, mengautomasikan tugas dengan skrip atau menggunakan Python untuk operasi yang lebih kompleks, SCP kekal sebagai alat yang serba boleh dan berkuasa untuk keperluan pengurusan data anda.