SCP Kullanarak Klasörleri ve Dosyaları Uzaktan Yerele Kopyalamak

SCP Kullanarak Klasörleri ve Dosyaları Uzaktan Yerele Kopyalamak
Shell

SCP ile Dosya Aktarma: Hızlı Kılavuz

Güvenli Kopyalama Protokolü (SCP), uzak ve yerel makineler arasında dosya ve dizin aktarımı için kullanışlı bir araçtır. Sunucunuza erişmek için sık sık SSH kullanıyorsanız, klasörleri ve dosyaları verimli bir şekilde nasıl kopyalayacağınızı bilmek, verilerinizi yönetmek için çok önemlidir.

Bu kılavuzda, adlı uzak klasörü kopyalamak için SCP'nin nasıl kullanılacağını keşfedeceğiz. foo yerel makinenize, özellikle /ana sayfa/kullanıcı/Masaüstü. Bu eğitimde SSH ve terminal komutlarının temel düzeyde anlaşıldığı varsayılmaktadır.

Emretmek Tanım
scp -r Bir dizini ve içeriğini uzak bir ana bilgisayardan yerel bir makineye yinelemeli olarak güvenli bir şekilde kopyalar.
paramiko.SSHClient() SSH işlemlerini kolaylaştırmak için Python'da bir SSH istemci örneği oluşturur.
scp.get() Dosyaları veya dizinleri uzak bir ana bilgisayardan yerel bir yola almak için Python'daki SCP istemcisini kullanır.
ansible.builtin.fetch Dosyaları uzak makinelerden yerel makineye getirmek için Ansible modülü.
flat: no Kopyalama sırasında dizin yapısını korumak için Ansible fetch modülündeki seçenek.
validate_checksum: yes Sağlama toplamlarını doğrulayarak kopyalanan dosyaların bütünlüğünü sağlar.

Dosya Aktarımları için SCP'yi Anlamak

Sağlanan kabuk betiği nasıl kullanılacağını gösterir scp Uzak sunucudaki bir klasörü yerel makineye kopyalamak için. İlk olarak, yerel dizinin yanı sıra uzak kullanıcı adı, ana bilgisayar ve dizin için değişkenleri tanımlar. Komut dosyası daha sonra şunu yürütür: scp -r "Güvenli kopya" anlamına gelen ve dizinlerin yinelemeli kopyalanmasına izin veren komut. Sözdizimi ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR} kaynak yolunu belirtirken ${LOCAL_DIR} yerel makinedeki hedef yolu belirtir. Senaryo bir başarı mesajını tekrarlayarak sona eriyor.

Python betiği aynı hedefe ulaşır ancak paramiko SSH bağlantılarını yönetmek için kütüphane ve scp Güvenli kopyayı gerçekleştirmek için kitaplık. Gerekli kütüphaneleri içe aktardıktan sonra uzak ve yerel dizinler için değişkenleri ayarlar. Betik, şunu kullanarak bir SSH istemci örneği oluşturur: paramiko.SSHClient() ve uzak sunucuya şu şekilde bağlanır: connect yöntem. Daha sonra bir SCP istemci örneği oluşturur. SCPClient(ssh.get_transport()) ve şunu kullanır scp.get Uzak dizini yerel makineye kopyalama yöntemi. Son olarak komut dosyası SCP istemcisini kapatır.

Ansible ile Dosya Aktarımlarını Otomatikleştirme

Ansible playbook, dosyaları uzak bir sunucudan yerel bir makineye kopyalamak için başka bir yöntemdir. Ansible, görevleri tanımlamak için YAML tabanlı bir yapılandırma kullanır. Başucu kitabı, görevi adlandırarak ve ana bilgisayarları (bu durumda localhost olan) belirterek başlar. Daha sonra uzak bir klasörü getirmek için bir görev tanımlar. ansible.builtin.fetch modülü. src öznitelik uzak dizini belirtirken, dest nitelik yerel hedefi belirtir. flat: no seçeneği, kopyalama sırasında dizin yapısının korunmasını sağlar.

fail_on_missing: yes seçeneği, kaynak dizinin mevcut olmaması durumunda başucu kitabının başarısız olmasını sağlar ve ek bir hata işleme katmanı sağlar. Ek olarak, validate_checksum: yes seçeneği, kopyalanan dosyaların bütünlüğünü, sağlama toplamlarını kontrol ederek doğrular, dosyaların doğru ve bozulmadan aktarıldığından emin olur. Bu yaklaşım özellikle tekrarlanan dosya aktarım görevlerini tutarlı ve güvenilir bir şekilde otomatikleştirmek için kullanışlıdır.

Dosyaları Uzaktan Yerele Aktarmak için SCP Kullanma

SCP Dosya Aktarımı için Kabuk Komut Dosyası

# Copying a remote folder to local directory using SCP
#!/bin/bash
# Define variables
REMOTE_USER="your_username"
REMOTE_HOST="your_server_address"
REMOTE_DIR="/path/to/remote/folder"
LOCAL_DIR="/home/user/Desktop"
# Execute SCP command
scp -r ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR} ${LOCAL_DIR}
echo "Folder copied successfully to ${LOCAL_DIR}"

Python ile SCP Dosya Aktarımlarını Otomatikleştirme

Otomatik SCP Aktarımı için Python Komut Dosyası

import paramiko
from scp import SCPClient
# Define variables
remote_user = "your_username"
remote_host = "your_server_address"
remote_dir = "/path/to/remote/folder"
local_dir = "/home/user/Desktop"
# Create SSH client and connect
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.connect(remote_host, username=remote_user)
# Create SCP client and transfer files
scp = SCPClient(ssh.get_transport())
scp.get(remote_dir, local_dir, recursive=True)
scp.close()

SCP Dosya Aktarımlarını Yönetmek için Ansible'ı Kullanma

SCP Dosya Aktarımı için Ansible Playbook

--- 
- name: Copy folder from remote to local
  hosts: localhost
  tasks:
    - name: Copy remote folder to local directory
      ansible.builtin.fetch:
        src: "/path/to/remote/folder"
        dest: "/home/user/Desktop"
        flat: no
        fail_on_missing: yes
        validate_checksum: yes

Gelişmiş SCP Teknikleri ve Dikkat Edilmesi Gerekenler

Temel dosya aktarımlarının ötesinde SCP, daha karmaşık görevler için paha biçilmez olabilecek çeşitli gelişmiş özellikler ve seçenekler sunar. Bu özelliklerden biri, birden fazla dosya veya dizini belirtmek için joker karakter kullanma yeteneğidir. Örneğin, kullanarak scp user@remote_host:/path/to/files/*.txt /local/path/ tüm .txt dosyalarını uzak dizinden yerel dizine kopyalayacaktır. Bu, çok sayıda dosyayla uğraşırken zamandan tasarruf edebilir ve iş akışlarını kolaylaştırabilir.

Bir diğer kullanışlı özellik ise -P SCP bağlantısı için bir bağlantı noktası numarası belirtmenize olanak tanıyan seçenek. Bu, özellikle SSH hizmetiniz standart olmayan bir bağlantı noktasında çalışıyorsa kullanışlıdır. Örneğin, kullanarak scp -P 2222 user@remote_host:/path/to/file /local/path/ uzak ana bilgisayara 2222 numaralı bağlantı noktasından bağlanacaktır. Ek olarak, -C seçeneği, aktarım sırasında verileri sıkıştırmak için kullanılabilir; bu, büyük dosyalar için aktarım sürelerini önemli ölçüde azaltabilir. Bu ekleyerek elde edilir -C SCP komutuna, örneğin scp -C user@remote_host:/path/to/largefile /local/path/.

SCP Dosya Aktarımları Hakkında Sık Sorulan Sorular

  1. SCP kullanarak bir dizinin tamamını nasıl kopyalarım?
  2. Komutu kullanın scp -r user@remote_host:/path/to/remote/dir /local/path/ bir dizini yinelemeli olarak kopyalamak için.
  3. SCP'yi kullanarak belirli bir bağlantı noktasından dosya kopyalayabilir miyim?
  4. Evet, bağlantı noktasını şununla belirleyebilirsiniz: scp -P port_number user@remote_host:/path/to/file /local/path/.
  5. SCP kullanarak birden fazla dosyayı nasıl kopyalayabilirim?
  6. Gibi joker karakterler kullanın scp user@remote_host:/path/to/files/*.txt /local/path/ birden fazla dosyayı kopyalamak için.
  7. SCP aktarımı sırasında dosyaları sıkıştırmak mümkün müdür?
  8. Evet ekle -C SCP komutunuza seçenek, örneğin scp -C user@remote_host:/path/to/file /local/path/.
  9. SCP ile büyük dosya aktarımlarını nasıl halledebilirim?
  10. Kullan -C Dosyaları sıkıştırma seçeneği ve kesintileri önlemek için istikrarlı bir bağlantı sağlayın.
  11. SCP komut dosyalarıyla otomatikleştirilebilir mi?
  12. Evet, SCP dosya aktarımlarını otomatikleştirmek için kabuk komut dosyalarını, Python komut dosyalarını veya Ansible oyun kitaplarını kullanabilirsiniz.
  13. SCP aktarımı başarısız olursa ne yapmalıyım?
  14. Ağ bağlantısını kontrol edin, doğru yol ve izinlerden emin olun ve SSH yapılandırmasını doğrulayın.
  15. SCP kesintiye uğrayan aktarımı devam ettirebilir mi?
  16. Hayır, SCP transferlerin sürdürülmesini desteklemiyor. Devam ettirilebilir aktarımlar için rsync'i kullanmayı düşünün.
  17. SCP aktarımı sırasında dosya bütünlüğünü nasıl sağlayabilirim?
  18. Kullan validate_checksum Ansible'da seçeneğini belirleyin veya aktarımdan sonra sağlama toplamlarını manuel olarak doğrulayın.

SCP Transferleri Hakkında Son Düşünceler:

Uzak ve yerel makineler arasında dosya aktarımı için SCP kullanımında uzmanlaşmak, verimli sunucu yönetimi için önemli bir beceridir. Kabuk komut dosyalarını, Python komut dosyalarını ve Ansible oyun kitaplarını kullanarak bu görevleri otomatikleştirip basitleştirebilir, zamandan tasarruf edebilir ve hataları azaltabilirsiniz. Özyinelemeli kopyalama, bağlantı noktası belirleme ve veri sıkıştırma gibi gelişmiş seçenekler SCP'nin çok yönlülüğünü daha da artırır. İster günlük işlemlerde ister büyük ölçekli veri geçişlerinde olsun, bu teknikleri anlamak güvenli ve güvenilir dosya aktarımlarını sağlar.