Ana içeriğe geç
Kategoriye Dön

Sunucuya Dosya Transferi: SCP, SFTP ve rsync Rehberi

SCP sözdizimi, SFTP etkileşimli mod, rsync ile senkronizasyon ve yedekleme, Windows kullanıcıları için WinSCP ve FileZilla rehberi. Linux sunucuya güvenli dosya transferi.

Okuma süresi: 11 dk Sunucu Yönetimi
scpsftprsyncdosya transferiwinscpfilezillasshlinux

İçindekiler

Sunucuya Dosya Transferi: SCP, SFTP ve rsync Rehberi

Linux sunucunuza dosya aktarmak için birden fazla güvenli yöntem mevcuttur. SCP (Secure Copy Protocol), SFTP (SSH File Transfer Protocol) ve rsync, SSH altyapısını kullanarak şifreli dosya transferi sağlar. Bu rehberde her üç aracın kullanımını ve Windows kullanıcıları için grafik arayüzlü alternatifleri öğreneceksiniz.

SCP ile Dosya Transferi

SCP, SSH protokolü üzerinden dosya kopyalamak için kullanılan basit ve hızlı bir araçtır.

Temel SCP Sözdizimi

hljs bash
# Yerel dosyayı sunucuya kopyala
scp /yerel/dosya.txt kullanici@sunucu-ip:/uzak/dizin/

# Sunucudan yerel makineye kopyala
scp kullanici@sunucu-ip:/uzak/dosya.txt /yerel/dizin/

# Dizin kopyalama (-r recursive)
scp -r /yerel/dizin/ kullanici@sunucu-ip:/uzak/dizin/

# Özel port kullanımı (-P büyük harf)
scp -P 2222 dosya.txt kullanici@sunucu-ip:/hedef/

# SSH anahtar dosyası ile
scp -i ~/.ssh/id_rsa dosya.txt kullanici@sunucu-ip:/hedef/

# İki uzak sunucu arasında kopyalama
scp kullanici1@sunucu1:/dosya.txt kullanici2@sunucu2:/hedef/

SCP Seçenekleri

hljs bash
# Sıkıştırma ile transfer (-C)
scp -C buyuk-dosya.tar.gz kullanici@sunucu-ip:/hedef/

# İlerleme göster (-v verbose)
scp -v dosya.txt kullanici@sunucu-ip:/hedef/

# Bant genişliği sınırla (KB/s)
scp -l 1024 dosya.txt kullanici@sunucu-ip:/hedef/

# Birden fazla dosya
scp dosya1.txt dosya2.txt kullanici@sunucu-ip:/hedef/

# Wildcard ile
scp *.log kullanici@sunucu-ip:/var/log/backup/

SCP, basit dosya kopyalama için idealdir. Büyük dizin senkronizasyonu veya yedekleme için rsync daha verimlidir.

SFTP ile Dosya Transferi

SFTP, SSH üzerinden çalışan tam özellikli bir dosya transfer protokolüdür. FTP'nin güvenli alternatifidir.

SFTP Bağlantısı

hljs bash
# SFTP oturumu başlat
sftp kullanici@sunucu-ip

# Özel port ile
sftp -P 2222 kullanici@sunucu-ip

# SSH anahtar ile
sftp -i ~/.ssh/id_rsa kullanici@sunucu-ip

SFTP Etkileşimli Komutlar

SFTP oturumu açıldıktan sonra kullanabileceğiniz komutlar:

hljs bash
# Uzak sunucuda dizin listele
ls
ls -la

# Uzak dizin değiştir
cd /var/www/html

# Yerel dizin değiştir
lcd ~/Downloads

# Mevcut uzak dizini göster
pwd

# Mevcut yerel dizini göster
lpwd

# Dosya yükle (yerel → uzak)
put dosya.txt
put dosya.txt /hedef/dizin/

# Dizin yükle
put -r /yerel/dizin/ /uzak/dizin/

# Dosya indir (uzak → yerel)
get dosya.txt
get /uzak/dosya.txt ~/Downloads/

# Dizin indir
get -r /uzak/dizin/ /yerel/dizin/

# Uzak sunucuda dizin oluştur
mkdir yeni-dizin

# Uzak sunucuda dosya sil
rm dosya.txt

# Uzak sunucuda dosya taşı/yeniden adlandır
rename eski-ad.txt yeni-ad.txt

# SFTP oturumunu kapat
exit
quit

Toplu SFTP İşlemleri

hljs bash
# Batch modunda SFTP (script ile)
sftp -b - kullanici@sunucu-ip << 'EOF'
cd /var/www/html
put index.html
put style.css
put app.js
EOF

# Batch dosyası ile
cat > sftp-commands.txt << 'EOF'
cd /var/www/html
put -r ./dist/
EOF
sftp -b sftp-commands.txt kullanici@sunucu-ip

rsync ile Senkronizasyon ve Yedekleme

rsync, dosya ve dizinleri verimli şekilde senkronize eden güçlü bir araçtır. Sadece değişen dosyaları transfer eder.

Temel rsync Sözdizimi

hljs bash
# Yerel dizini sunucuya senkronize et
rsync -avz /yerel/dizin/ kullanici@sunucu-ip:/uzak/dizin/

# Sunucudan yerel makineye senkronize et
rsync -avz kullanici@sunucu-ip:/uzak/dizin/ /yerel/dizin/

# Özel SSH portu ile
rsync -avz -e "ssh -p 2222" /yerel/ kullanici@sunucu-ip:/uzak/

# SSH anahtar ile
rsync -avz -e "ssh -i ~/.ssh/id_rsa" /yerel/ kullanici@sunucu-ip:/uzak/

rsync Seçenekleri

hljs bash
# -a: archive (recursive + permissions + timestamps + symlinks)
# -v: verbose (ayrıntılı çıktı)
# -z: compress (sıkıştırma)
# -h: human-readable (okunabilir boyutlar)
# -P: progress + partial (ilerleme + kısmi transfer)
# --delete: hedefte olmayan dosyaları sil
# --dry-run: gerçek transfer yapmadan simüle et
# --exclude: belirli dosyaları hariç tut

# Tam yedekleme komutu
rsync -avzh --progress /var/www/ kullanici@sunucu-ip:/backup/www/

# Silinen dosyaları da senkronize et
rsync -avz --delete /yerel/ kullanici@sunucu-ip:/uzak/

# Önce simüle et
rsync -avz --dry-run /yerel/ kullanici@sunucu-ip:/uzak/

# Belirli dosyaları hariç tut
rsync -avz --exclude='*.log' --exclude='.git' /yerel/ kullanici@sunucu-ip:/uzak/

# Bant genişliği sınırla (KB/s)
rsync -avz --bwlimit=1024 /yerel/ kullanici@sunucu-ip:/uzak/

rsync ile Otomatik Yedekleme

hljs bash
# Cron ile günlük yedekleme
crontab -e

# Her gece 02:00'de yedekle
0 2 * * * rsync -avz --delete /var/www/ kullanici@yedek-sunucu:/backup/www/ >> /var/log/rsync-backup.log 2>&1

# Tarihli yedekleme
rsync -avz /var/www/ kullanici@sunucu-ip:/backup/www-$(date +%Y%m%d)/

rsync'in en güçlü özelliği delta transfer algoritmasıdır: sadece değişen blokları transfer eder. Bu, büyük dosyaların güncellenmesinde büyük bant genişliği tasarrufu sağlar.

Windows Kullanıcıları için Grafik Arayüzler

WinSCP

WinSCP, Windows için en popüler SFTP/SCP istemcisidir.

Kurulum ve Bağlantı:

  1. winscp.net adresinden indirin
  2. Yeni oturum oluşturun:
    • Dosya protokolü: SFTP
    • Sunucu adresi: sunucu-ip
    • Port: 22
    • Kullanıcı adı ve şifre
  3. SSH anahtar için: Gelişmiş → SSH → Kimlik Doğrulama → Özel anahtar dosyası

WinSCP Özellikleri:

  • Sürükle-bırak dosya transferi
  • Dizin senkronizasyonu
  • Yerleşik metin editörü
  • Komut satırı arayüzü (winscp.com)
  • Arka plan transferleri

FileZilla

FileZilla, Windows, macOS ve Linux için çapraz platform SFTP istemcisidir.

Bağlantı Kurma:

  1. filezilla-project.org adresinden indirin
  2. Site Yöneticisi → Yeni Site:
    • Protokol: SFTP - SSH File Transfer Protocol
    • Sunucu: sunucu-ip
    • Port: 22
    • Oturum açma türü: Normal veya Anahtar dosyası
  3. Bağlan

SSH Anahtar Kullanımı:

  • Düzenle → Ayarlar → Bağlantı → SFTP → Anahtar dosyası ekle
  • .ppk formatı için PuTTYgen ile dönüştürme gerekebilir

Cyberduck (macOS/Windows)

hljs bash
# Cyberduck CLI (duck) ile transfer
duck --upload sftp://kullanici@sunucu-ip/hedef/ /yerel/dosya.txt

SSH Config ile Kolay Bağlantı

hljs bash
# ~/.ssh/config dosyasını düzenle
nano ~/.ssh/config
Host rexe-sunucu
    HostName 203.0.113.50
    User ubuntu
    Port 22
    IdentityFile ~/.ssh/id_rsa
    ServerAliveInterval 60
hljs bash
# Artık kısa adla bağlanabilirsiniz
scp dosya.txt rexe-sunucu:/hedef/
sftp rexe-sunucu
rsync -avz /yerel/ rexe-sunucu:/uzak/

Sorun Giderme

Bağlantı Reddedildi

hljs bash
# SSH bağlantısını test et
ssh -v kullanici@sunucu-ip

# Port kontrolü
nmap -p 22 sunucu-ip

# Firewall kontrolü
sudo ufw status

İzin Hatası

hljs bash
# Hedef dizin izinlerini kontrol et
ls -la /hedef/dizin/

# Gerekirse izin ver
sudo chmod 755 /hedef/dizin/
sudo chown kullanici:kullanici /hedef/dizin/

Sonuç

SCP, SFTP ve rsync, Linux sunuculara güvenli dosya transferi için vazgeçilmez araçlardır. Basit kopyalama için SCP, etkileşimli yönetim için SFTP, senkronizasyon ve yedekleme için rsync tercih edin. Windows kullanıcıları WinSCP veya FileZilla ile aynı işlevselliğe grafik arayüzden erişebilir.