Bir CentOS sunucusundan diğerine dosya aktarmam gerekiyor. Her 10 dakikada bir 5MB dosya aktarır. Şifrelemeye gerek yok.
Dosyaların hızlı aktarımı için kolay olan neydi?
Ftp'den daha basit bir şey var mı?
Teşekkürler!
Bir CentOS sunucusundan diğerine dosya aktarmam gerekiyor. Her 10 dakikada bir 5MB dosya aktarır. Şifrelemeye gerek yok.
Dosyaların hızlı aktarımı için kolay olan neydi?
Ftp'den daha basit bir şey var mı?
Teşekkürler!
Yanıtlar:
rsync
Ftp veya tftp kullanmadan önce rsync kullanırdım.
Daha fazla seçenek ve (benim tecrübelerime göre) daha güvenilir transfer.
ssh üzerinden katran iyidir, ancak netcat üzerinden TCP üzerinden katran alabileceğiniz kadar düşük ek yüktür! Bu bir defalık bir şeyse, bunu deneyin:
Alıcıda:
nc -l -p 8989 | tar x
Gönderende:
tar cf - /source-path | nc (receiving host ip address) 8989
Bu düzenli olarak yapacağınız bir şeyse, muhtemelen rsync kullanırdım.
İki kişi ssh üzerine katrandan bahsetti, ancak nasıl yapılacağını söylemedi. Kayıt için temel prosedür:
tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'
Veya, transferleri alıcı uçtan başlatmak istiyorsanız:
ssh remotehost 'cd /source && tar cf - files' | tar xvf -
Bunu Evan'ın netcat çözümüne göre yapmanın avantajı, her şeyin bir bilgisayardan başlatılabilmesidir; iki netcat çağrısını koordine etmek zorunda değilsiniz. Otomatik olarak çalışması için buna ihtiyacınız varsa, parola olmadan bağlantı kurmanızı sağlayan bir ssh anahtarı ayarlayabilir ve bu bağlantıları bu bağlantılar için kullanabilirsiniz.
ssh, veri akışını sıkıştırmak için -C seçeneğine sahiptir veya GNU tar'ın yerleşik sıkıştırma yeteneğini kullanabilirsiniz:
tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'
Rsync başka bir seçenektir, ancak güçlü kıyafeti, alıcı uçta zaten mevcut olan dosyaları güncellemektir. Ben zaten diğer ucunda mevcut olmayan dosyaları aktarmak için kullanırken scp veya tar / ssh daha yavaş buldum.
Dürüst olmak gerekirse, scp
ya da daha tar
fazla kullanırdım ssh
. Şifreleme işleri yavaşlatır, ancak kurulum ve kullanım kolaylığı, güvenilirlik ve (elbette öznel olarak) aşinalık, bu hıza gerçekten ihtiyacım olmadıkça beni vurmaya istekli hale getirir .
Ssh aktarımını varsayılandan daha hızlı bir şifre kullanmasını söyleyerek hızlandırabilirsiniz. Varsayılan genellikle 3des
ve genellikle yapabilirsiniz -c des
, bu açıkça daha hızlı olacak ve -c blowfish
tam olarak test etmedim de, aynı zamanda hızlı temsil edilir.
(SSHv1 günlerinde sık sık yapabilirdiniz -c none
, ama sanırım biri kötü juju olduğuna karar verdi.)
Scp / ssh'den geçmeniz gerekiyorsa, deneylerim bu günlerde varsayılan olarak etkinleştirilen en hızlı şifrenin RC4 olduğunu gösteriyor. Şifreyi ssh / scp komutunuzda ' -c arcfour ' ile belirtirsiniz :
ilk kopya için:
scp -c arcfour -r foo/ desthost:/destdir
güncellemeler için:
rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir
Rsync gitmek için iyi bir yoldur çünkü aynı dosyaları bir kereden fazla aktarırken bulursanız, man sayfasında bu alıntı ile gösterildiği gibi kopyayı hızlandıracaktır.
rsync is a program that behaves in much the same way that rcp does, but
has many more options and uses the rsync remote-update protocol to
greatly speed up file transfers when the destination file is being
updated.
The rsync remote-update protocol allows rsync to transfer just the dif-
ferences between two sets of files across the network connection, using
an efficient checksum-search algorithm described in the technical
report that accompanies this package.
FTP oldukça basittir, ancak bir makinede NFS paylaşımı oluşturmak ve diğerine takmak daha da basit bir yol olabilir. Sonra dosyaları kopyalamak bir dizinden diğerine bir cp yapmaktan oluşacaktır.
Hız istiyorsanız netcat ve katran kullanabilirsiniz. Şifrelemenin bir endişe olmadığı yerel bir ağda ssh, rsync veya scp'den daha hızlı olacaktır. Google "netcat tar".
nc -l -p 7878 | tar -C /target/dir -xzf -
tar -cz /source/dir | nc DestinationServer 7878
Bu açıkça netcat'in kurulu olmasını gerektirir. Daha fazla bilgi için Google "netcat tar".
Sorununuzu zaten çözdüğünüze inanıyorum, ancak ssh'nizin başka bir bağlantı noktasında (standart bağlantı noktası 22'de değil) çalışması durumunda bunu kullanabilirsiniz
rsync -avz --rsh = 'ssh -pXXXXX' / local / dir / root@192.168.1.2: / remote / dir
Not: - XXXXX ürününü bağlantı noktası numaranızla değiştirin - 192.16.1.2'yi doğru uzak sunucu IP'si ile değiştirin
https://www.npmjs.org/package/gist-cli
https://github.com/settings/applications#personal-access-tokens
ya da bu:
https://github.com/defunkt/gist
Yüklemek ve indirmek için gist komutunu kullanın