Dosyaları Güvenli Bir Şekilde Kopyalamak: SCP Kullanma Kılavuzu
Güvenli Kopyalama Protokolü (SCP), dosyaları ve dizinleri uzak bir sunucu ile yerel bir makine arasında güvenli bir şekilde aktarmak için güçlü bir araçtır. Sunucunuza erişmek için sık sık SSH kullanıyorsanız, SCP'yi nasıl etkili bir şekilde kullanacağınızı bilmek iş akışınızı kolaylaştırabilir ve önemli dosyaları uzak sunucunuzdan yerel sisteminize hızlı ve güvenli bir şekilde kopyalayabilmenizi sağlar.
Bu kılavuzda, "foo" adlı uzak klasörü /home/user/Desktop adresindeki yerel dizininize kopyalama adımlarında size yol göstereceğiz. Yedeklemeleri yönetiyorsanız, kod dağıtıyorsanız veya yalnızca dosyaları taşımanız gerekiyorsa, SCP komutlarını anlamak görevlerinizi daha kolay ve daha verimli hale getirecektir.
Emretmek | Tanım |
---|---|
scp -r | Tüm dizinleri uzak makineden yerel makineye güvenli bir şekilde kopyalar. |
paramiko.SFTPClient.from_transport() | Mevcut bir SSH aktarımından bir SFTP istemcisi oluşturur. |
os.makedirs() | Tüm orta düzey dizinlerin oluşturulmasını sağlayarak yinelemeli olarak bir dizin oluşturur. |
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) | Sunucunun ana bilgisayar anahtarını istemde bulunmadan otomatik olarak ekler; komut dosyası oluşturma için kullanışlıdır. |
scp.listdir_attr() | Bir dizindeki dosyaların özniteliklerini listeleyerek özyinelemeli kopyalama işlevini etkinleştirir. |
paramiko.S_ISDIR() | Belirli bir yolun bir dizin olup olmadığını kontrol ederek özyinelemeli kopyalamaya yardımcı olur. |
scp.get() | Uzak sunucudaki bir dosyayı yerel makineye kopyalar. |
SCP Komut Dosyalarının Ayrıntılı Açıklaması
İlk komut dosyası örneği, scp -r Uzak bir dizini yerel bir makineye kopyalama komutu. scp Güvenli Kopyalama Protokolü anlamına gelen komut, dosyaları uzak bir ana bilgisayar ile yerel bir makine arasında güvenli bir şekilde aktarmak için SSH'yi kullanan bir komut satırı aracıdır. -r Komuttaki flag, işlemin yinelemeli olması gerektiğini belirtir; bu, belirtilen dizindeki tüm dosya ve dizinlerin kopyalanacağı anlamına gelir. Komut yapısı basittir: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. Burada, user@remote_host uzak kullanıcıyı ve ana bilgisayarı belirtir ve /path/to/remote/folder Ve /home/user/Desktop/ sırasıyla kaynak ve hedef yollardır.
İkinci örnek, SCP sürecini otomatikleştiren bir kabuk betiğidir. Bu komut dosyası uzak kullanıcı, ana bilgisayar ve yollar için değişkenleri tanımlayarak yeniden kullanmayı ve değiştirmeyi kolaylaştırır. Komut dosyası şunu kullanır: scp -r Tekrarlanan aktarımların gerekli olduğu senaryolarda yardımcı olan dosyaları aktarmak için bir Bash betiği içinde. Ayrıca, aktarım tamamlandığında kullanıcıyı bilgilendiren bir bildirim mesajı da içerir. Üçüncü örnek, özellikle daha karmaşık veya otomatikleştirilmiş iş akışları için yararlı olan Paramiko kitaplığıyla birlikte Python'u kullanıyor. Betik bir SSH istemcisi kurar ve paramiko.SFTPClient.from_transport() SFTP oturumu oluşturma yöntemi. Daha sonra dosyaları uzak sunucudan yerel dizine yinelemeli olarak kopyalamak için bir işlev tanımlar. scp.listdir_attr() Ve paramiko.S_ISDIR() Dosyalar ve dizinler arasında ayrım yapmak için. Bu yaklaşım, Python'da komut dosyası oluşturmayı tercih edenler ve dosya aktarım işlevselliğini daha büyük otomasyon komut dosyalarına entegre etmeleri gerekenler için faydalıdır.
Dosyaları Uzak Sunucudan Yerel Makineye Aktarmak için SCP Kullanma
SCP için Kabuk Komut Dosyası
# 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/
SCP Aktarımını Kabuk Komut Dosyasıyla Otomatikleştirme
SCP'yi Otomatikleştirmek için Kabuk Komut Dosyası
#!/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}"
SCP Dosya Aktarımı için Python Komut Dosyası
Paramiko Kütüphanesini Kullanan Python Betiği
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}")
Gelişmiş SCP Kullanımı: İpuçları ve Püf Noktaları
Temel kullanımın ötesinde scp Dosyaları ve dizinleri kopyalamak için dosya aktarım deneyiminizi geliştirebilecek çeşitli gelişmiş teknikler ve seçenekler vardır. Yararlı özelliklerden biri, aktarım sırasında kullanılan bant genişliğini sınırlama yeteneğidir; bu, özellikle sınırlı ağ kaynaklarıyla çalışırken yararlı olabilir. Bu, aşağıdakiler kullanılarak başarılabilir: -l seçeneğinin ardından saniyede kilobit cinsinden bant genişliği sınırı gelir; örneğin, scp -r -l 1000 user@remote_host:/path/to/remote/folder /home/user/Desktop/. Bir başka yararlı seçenek de -C Sıkıştırmayı mümkün kılan ve büyük dosyaların aktarımını potansiyel olarak hızlandıran bayrak.
Güvenlik, kullanırken dikkate alınması gereken bir diğer kritik husustur. scp. Sırasında scp doğası gereği güvenli aktarımlar için SSH'yi kullandığından, güvenliği artırmak için atabileceğiniz ek adımlar vardır. Örneğin, kimlik doğrulama için parolalar yerine SSH anahtarlarının kullanılması, güvenliği ve rahatlığı önemli ölçüde artırabilir. Ek olarak, aşağıdaki komutu kullanarak farklı bir SSH bağlantı noktası belirtebilirsiniz: -P sunucunuz varsayılan bağlantı noktası 22'yi kullanmıyorsa bu seçenek. Örneğin, scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ 2222 numaralı bağlantı noktasında SSH çalıştıran bir sunucuya bağlanmanıza olanak tanır.
SCP Hakkında Sıkça Sorulan Sorular ve Cevaplar
- SCP kullanarak bir dosyayı yerelden uzak konuma nasıl kopyalarım?
- Kullanabilirsiniz scp local_file user@remote_host:/path/to/remote/directory.
- SCP aktarımının ilerlemesini nasıl kontrol edebilirim?
- Kullan -v ayrıntılı modu etkinleştirme seçeneği: scp -v -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
- SCP kullanırken dosya niteliklerini koruyabilir miyim?
- Evet, kullan -p Değişiklik zamanlarını, erişim zamanlarını ve modları koruma seçeneği: scp -p -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
- SCP'yi farklı bir SSH anahtarıyla nasıl kullanırım?
- SSH anahtarını şununla belirtin: -i seçenek: scp -i /path/to/key -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
- SCP ile büyük dosya aktarımlarını nasıl halledebilirim?
- Kullan -C sıkıştırma seçeneği ve -l bant genişliğini sınırlama seçeneği: scp -C -l 1000 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
- SCP kullanarak dosyaları farklı bir SSH bağlantı noktası üzerinden nasıl aktarırım?
- Kullan -P bağlantı noktasını belirtme seçeneği: scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
- SCP sembolik bağlantıları işleyebilir mi?
- Evet -r seçeneği, sembolik bağlantıların yanı sıra dosya ve dizinleri de kopyalayacaktır.
- Bir SCP aktarımı kesintiye uğrarsa ne olur?
- Yeniden çalıştır scp aktarımı sürdürme komutu; zaten kopyalanmış olan dosyaları atlayacaktır.
- SCP'yi bir komut dosyasında parolayla nasıl kullanırım?
- Bunun yerine SSH anahtarlarını kullanmanız önerilir ancak aşağıdaki gibi araçları da kullanabilirsiniz: sshpass komut dosyalarında parola kimlik doğrulaması için.
SCP Kullanımı Hakkında Son Düşünceler
Dosyaları ve dizinleri uzak bir sunucudan yerel bir makineye aktarmak için SCP'nin nasıl kullanılacağını anlamak, iş akışı verimliliğinizi büyük ölçüde artırabilir. Hem temel komutlara hem de ileri tekniklere hakim olarak güvenli ve verimli veri aktarımlarını sağlayabilirsiniz. İster tek tek dosyaları ister dizinlerin tamamını kopyalıyor olun, komut dosyalarıyla görevleri otomatikleştiriyor olun veya daha karmaşık işlemler için Python kullanıyor olun, SCP, veri yönetimi ihtiyaçlarınız için çok yönlü ve güçlü bir araç olmaya devam ediyor.