Okuyucuların Seçimi
Popüler Makaleler
Yandex.Disk, parçası olduğu birkaç Yandex servisinden biridir. yazılım masaüstü için. Ve en önemli bileşenlerinden biri senkronizasyon algoritmasıdır. yerel dosyalar buluttaki kopyalarıyla. Son zamanlarda tamamen değiştirmek zorunda kaldık. Eski sürüm, on binlerce dosyayı bile zor sindiremezse ve dahası, bazı "karmaşık" kullanıcı eylemlerine yeterince hızlı tepki vermediyse, aynı kaynakları kullanan yeni sürüm yüz binlerce dosyayla başa çıkabilir.
Bu yazıda size bunun neden olduğunu anlatacağım: Yandex.Disk yazılımının ilk sürümünü çıkardığımızda önceden tahmin edemediğimizi ve yenisini nasıl oluşturduğumuzu anlatacağım.
Her şeyden önce, senkronizasyon görevi hakkında. Teknik olarak, kullanıcının bilgisayarındaki ve buluttaki Yandex.Disk klasöründe aynı dosya kümesini tutmaktan ibarettir. Yani dosya yeniden adlandırma, silme, kopyalama, ekleme ve değiştirme gibi kullanıcı eylemleri bulut ile otomatik olarak senkronize edilmelidir.
Birkaç kullanıcı aynı anda aynı hesapla çalışıyorsa veya paylaşılan bir klasörleri varsa durum daha da karmaşık hale gelebilir. Ve bu, Yandex.Disk kullanan kuruluşlarda oldukça sık olur. Önceki örnekte, ilk yeniden adlandırma için arka uçtan onay aldığımız anda, başka bir kullanıcının bu klasörü alıp yeniden adlandırdığını hayal edin. Bu durumda yine ilk kullanıcının bilgisayarında yapmış olduğu işlemleri hemen gerçekleştiremezsiniz. Yerel olarak çalıştığı klasör, şu anda arka uçta zaten farklı şekilde adlandırılıyor.
Bir kullanıcının bilgisayarındaki bir dosyanın bulutta çağrıldığı gibi adlandırılamadığı zamanlar vardır. Bu, adında yerel dosya sistemi tarafından kullanılamayan bir karakter varsa veya kullanıcı davet edildiğinde olabilir. paylaşılan klasör, ve bu ada sahip kendi klasörüne sahiptir. Bu gibi durumlarda, yerel takma adlar kullanmalı ve bunların buluttaki nesnelerle ilişkilerini takip etmeliyiz.
Algoritmanın bu versiyonunda üç ana ağaç kullandık: yerel (Yerel Dizin), bulut (Uzak Dizin) ve son senkronize (Kararlı Dizin). Ek olarak, zaten kuyruğa alınmış senkronizasyon işlemlerinin yeniden oluşturulmasını önlemek için iki yardımcı ağaç daha kullanıldı: yerel beklenen ve beklenen bulut (Beklenen Uzak Dizin ve Beklenen Yerel Dizin). Bu yardımcı ağaçlar, yerelin beklenen durumunu sakladı. dosya sistemi ve bulut, zaten kuyruğa alınmış tüm senkronizasyon işlemlerini tamamladıktan sonra.
Biz de artırmak istedik en yüksek miktar kullanıcının sorunsuz çalışabileceği dosyalar. Örneğin, fotoğraf oturumlarının sonuçlarını Yandex.Disk'te saklayan bir fotoğrafçı, onlarca, hatta yüz binlerce dosya olabilir. Bu görev, insanlar Yandex.Disk'te ek alan satın alma fırsatı bulduğunda özellikle acil hale geldi.
Geliştirme aşamasında ben de bir şeyleri değiştirmek istedim. hata ayıklama eski versiyon bir elementin durumları hakkındaki veriler farklı ağaçlarda bulunduğundan zorluklara neden oldu.
Bu zamana kadar, arka uçta nesnelerin kimliği ortaya çıktı, bu sayede hareketleri algılama problemini daha verimli bir şekilde çözmek mümkün oldu - daha önce yolları kullandık.
Bunun büyük bir değişiklik olduğunu anladığımızdan, yeni çözümün etkinliğini doğrulayan bir prototip oluşturduk. Yeni bir dosyanın senkronizasyonu sırasında ağaçtaki verilerin nasıl değiştiğine dair bir örneğe bakalım.
Yandex.Disk, dosya bütünlüğünü kontrol etmek, değişen parçaları tespit etmek ve arka uçtaki dosyaları tekilleştirmek için sha256 ve MD5 özetlerini kullanır. Bu görev CPU'yu yoğun bir şekilde yüklediğinden, yeni sürümde özet hesaplamalarının uygulanması önemli ölçüde optimize edilmiştir. Dosya özeti alma hızı yaklaşık iki kat arttı.
Yapılan değişiklikler sonucunda programın sorunsuz bir şekilde işleyebileceği dosya sayısı önemli ölçüde artmıştır. Windows sürümü 300.000 dosyaya sahiptir ve Mac OS X sürümü 900.000 dosyaya sahiptir.
Neden yedeklemeniz gerektiği bir sır değil. Örneğin, bir web geliştiricisinin, geliştirme sürecinde kendisi tarafından fark edilmeyen bir hata yapması ve birkaç saat sonra hatanın yüzeye "açılması" ve kesinlikle zaman kalmaması durumunda yedekleme yapması uygun olacaktır. Hatayı bulmak ve düzeltmek için. Vscale'in elbette bir yedekleme sistemi var, ancak yalnızca tüm sunucu verilerinin kopyalanmasını sağlıyor. Ve bir yedekten geri yükleme yeteneği yalnızca kopyanın yapıldığı sunucuda mevcuttur. Bu yetenek, koşullu bir web geliştiricisinin ihtiyaçlarını tam olarak karşılamaz. Ancak, artık dünyanın iyi gelişmiş bir "bulut" trendi var: bulut barındırma, bulut VPS, Bulut depolama veriler vb. Bu kılavuzda, size bulut yedekleme depolamasını nasıl kuracağınızı göstereceğiz. Yandex.Disk bu konuda bize yardımcı olacaktır.
Anahtar bileşeni yüklemeye başlayalım - Ya.Disk istemcisi. Standart havuz listesinde Ya.Disk istemcisi ile birlikte bir paket bulunmadığından, havuzu manuel olarak eklemeniz, ardından paket dizinini güncellemeniz ve ancak ondan sonra paketi istemciyle birlikte kurmanız gerekecektir. Ya.Disk'in web sitesinde bir liste var gerekli ekipler tek satırda:
Eko "deb http://repo.yandex.ru/yandex-disk/deb/ kararlı ana"| sudo tee -a /etc/apt/sources.list .d / yandex.list> / dev / null && wget http: //repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG -O- | sudo apt-key add - && sudo apt-get güncelleme && sudo apt-get install -y yandex-diskYandex istemcisi başarıyla kuruldu ve onu yapılandırmaya başlayabilirsiniz. Yandex, istemcinin yapılandırma dosyalarıyla minimum düzeyde çalıştığından emin oldu ve her şeyi tek bir komutla yapılandırma yeteneği ekledi:
Yandex disk kurulumu
Yukarıdaki komutun çalışma sırası:
Ya.Disk'i otomatik çalıştırmayı etkinleştirdiğinizden emin olun ve geri kalan öğeleri kendi takdirinize göre özelleştirebilirsiniz. Bu noktada, ayar tamamlanmış sayılabilir.
Yaratmak için destek olmak, kullanılacak birçok komut var. Python veya Perl bu konuda yardımcı olabilir, ancak bunu bash kullanarak yapmak en uygunudur. Basit ve kullanımı kolaydır ve doğrudan konsolla etkileşime girer. Bir bash betiği oluşturun:
Nano /var/backup.sh
İçine aşağıdaki kodu yapıştırın:
SERVER_PATH = "/ var / www / html"
cur_date = `tarih +% Y-% m-% d`
dosyaadı = "yedekleme -" $ cur_date ".tar.bz2"
tar -cjf $ dosya adı $ SERVER_PATH
if [-f $ dosya adı]; Daha sonra
mv $ dosya adı /root/Yandex.Disk/backup/
yandex-disk senkronizasyonu
fi
Dosyayı klavye kısayoluyla kaydedin Ctrl + O, tuşu ile işlemi onaylayın Girmek ve dosyayı klavye kısayoluyla kapatın Ctrl + X... Sistem komutlarına (klasör oluştur ve taşı, dizinlere erişim) erişebilmesi için dosyaya izinler atadığınızdan emin olun:
CD / var
chmod -R 755 * backup.sh
Komut dosyasının ne yaptığı hakkında kısaca:
Komut dosyasının aşağıdaki komutla çalışıp çalışmadığını kontrol edebilirsiniz:
Cd / var && ./backup.sh
Komutun yürütülmesinin bir sonucu olarak, arşiv şuraya yüklenecektir: Bulut depolama.
Sonraki ve son adım, komut dosyasını görev zamanlayıcıya eklemektir. Bu crontab ile bize yardımcı olacak. Zamanlanmış görevler listesini açın:
Crontab -e
En sonuna şu satırı ekleyin:
0 0 * * * /var/backup.sh
Şimdi Crontab betiği her gün gece yarısı çalıştıracak. Bu, otomatik yedekleme yapılandırmasını tamamlar.
Başarıyla yapılandırdınız otomatik oluşturma web sitenizin dizini için bir yedek. Bu, sunucunun kendisinde depolanmışsa bir yedeği kaybetmemek için çok kullanışlı bir algoritmadır. Aynı prensibe göre, yapılandırma dosyalarının yedek kopyalarını oluşturabilirsiniz. Genel olarak bulut teknolojileri iyi çünkü kişisel verilerin yüksek düzeyde kullanılabilirliğini ve depolanmasını sağlıyorlar. Bulutu seçmek iyi bir seçimdir.
Projelerin (sitelerin) yedeklerini, örneğin sunucuda yer olmaması (hosting, VDS, VPS) veya yedeklerin saklanmasının güvenliğini artırmak (sunucu olması durumunda) gibi çeşitli nedenlerle Yandex.Disk'e yüklemeniz gerekebilir. baskınsız ve binayı terk ediyor).
Bu bağlamda, kendim için yazdım ve başkaları için Yandex.Disk'te yedekleme için küçük bir bash betiği göndermeye karar verdim. Komut dosyası işlevleri:
- Sunucuda yedekleme projelerinin oluşturulması (dosyalar + MySQL veritabanları);
- Uygulama olarak Yandex.Disk'te yetkilendirme (belirteçle, kullanıcı adı ve şifre kullanmaktan daha güvenli bir yol);
- Sunucudan Yandex.Disk'e yedek gönderme;
- Yer kazanmak için eski yedekleri Yandex.Disk'ten kaldırma (yapılandırılabilir maksimum yedek sayısı);
- Bir günlüğü kaydetme ve e-postaya gönderme (yapılandırılabilir).
Komut dosyasını kullanmak için öncelikle Yandex.Disk'ten bir jeton almalısınız. Başlayalım.
1. Yedekleyeceğimiz hesap altında Yandex'e giriş yapın, oauth.yandex.ru adresine gidin ve "Yeni bir uygulama kaydet" e tıklayın.
2. Uygulamanın adını girin (örneğin, "yedekleme") ve "Yandex.Disk REST API" bölümünde gerekli hakları verin, yani: "Disk hakkındaki bilgilere erişim" ve "Uygulama klasörüne erişim" Diskte".
Aynı sayfanın altında, "Geri Arama URL'si" alanının altındaki "URL'yi geliştirme için gönder"i ve "Kaydet"i tıklayın:
3. Uygulama ayarlarını kaydettikten sonra, uygulama verilerinin bulunduğu sayfaya yönlendirileceğiz:
4. Şimdi jetonun kendisini alıyoruz (isterseniz, bununla ilgili daha fazla bilgiyi Yandex kılavuzunda okuyabilirsiniz), bunun için kimliği kopyalıyoruz, URL'nin sonunda değiştiriyoruz https://oauth.yandex.ru/ Authorize?response_type=token&client_id=, sonuçtaki adrese gidin ve uygulamaya izin verildiğini onaylayın:
Sonuç olarak, en az 1 yıl süreyle verilen sayfada bir jeton görüntülenecektir, böylece yedekleme komut dosyası aniden çalışmayı durdurursa, yeni bir jeton alabilir ve onu komut dosyasına değiştirebiliriz. Alınan jetonu kullanarak Yandex.Disk ile çalışma yeteneklerini özel bir test alanında test edebilirsiniz.
Ve şimdi Yandex.Disk'te bir yedekleme için bash betiğinin kendisi:
#! / bin / bash # # Sergey Lukonin tarafından Yandex.Disk yedekleme komut dosyası v1.0 (neblog.info) # # # # # # # # # # # YEDEKLEME AYARLARI MYSQL # # # # # # # # # # # Sunucu DB MYSQL_SERVER = mysql.some-server.ru # Mevcut veritabanlarını yedekleyeceğimiz kullanıcı, mysql kökü genellikle tüm veritabanlarına erişilebilir, bireysel kullanıcı genellikle belirli bir projenin veritabanına erişebilir MYSQL_USER = bazı kullanıcı # Veritabanı kullanıcı şifresi (Sunucu kökünden şifre ve mysql kökünden farklı olanları karıştırmayın) MYSQL_PASSWORD = bir şifre # # # # # # # # # # GENEL AYARLAR # # # # # # # # # # # Dizin Yandex'e gönderildikten sonra silinen yedeklerin geçici olarak saklanması için .. Disk yedekleri (0 - tüm yedekleri sakla): MAX_BACKUPS = "14" # Arşiv adlarında kullanılan tarih DATE = `date" +% Y-% m-% d "` # Tek bir arşive yerleştirilecek ve Yandex.Disk'e gönderilecek olan (bir boşlukla ayrılmış) arşivleme dizinleri DIRS = "/ home / www / projeler / neblog" # Yandex.Disk belirteci (için neblog.info'ya bakın) nasıl edinilir) TOKEN = "" # Geyik içinde saklanan günlük dosyasının adı $ BACKUP_DIR LOGFILE = "backup.log" içinde belirtilen dizine # Script yürütme sonucunun gönderileceği e-posta. Sonuç göndermek istemiyorsanız boş bırakın. sendLog = " [e-posta korumalı] "# Yalnızca hataları gönder (doğru). Komut dosyasının yürütülmesinin herhangi bir sonucu için günlük göndermek istiyorsanız false belirtin. SendLogErrorsOnly =" false "# # # # # # # # # # AYARLARIN SONU # # # # # # # # # # # # # # # # # # # # HİÇBİR ŞEYİ DEĞİŞTİRMEYİN! sendLogErrorsOnly" == true ]; o zaman echo "$ 1" | grep -q "error" ise echo "$ 2" | mail -s "$ 1" $ sendLog> / dev / null fi else echo "$ 2" | mail -s "$ 1" $ sendLog> / dev / null fi fi) işlev günlüğü () (echo "[" `date" +% Y-% m-% d% H:% M:% S "` "] Dosya $ BACKUP_DIR: $ 1" >> $ BACKUP_DIR / $ LOGFILE) function parseJson () (yerel çıktı normal ifadesi = "(\" $ 1 \ ": [\"]?) ([^ \ ", \)] +) ([\"]?) "[[$ 2 = ~ $ normal ifade]] && çıktı = $ (BASH_REMATCH) echo $ çıktı) function checkError () (echo $ (parseJson "error" "$ 1")) function getUploadUrl ( ) (json_out = `curl -s -H" Yetkilendirme: OAuth $ TOKEN "https: //cloud-api.yandex.net: 443 / v1 / disk / kaynaklar / yükleme /? Yol = uygulama: / $ backupName & üzerine yazma = doğru' json _error = $ (checkError "$ json_out") if [[$ json_error! = ""]]; ardından "$ PROJECT - Yandex.Disk hatası: $ json_error" postalama "$ PROJECT - Yandex.Disk yedekleme hatası" "$ FILENAME dosyasını kopyalarken HATA. Yandex.Disk hatası: $ json_error" echo "" else çıktı = $ (parseJson " href "$ json_out) echo $ output fi) function uploadFile (local json_out local uploadUrl local json_error uploadUrl = $ (getUploadUrl) if [[$ uploadUrl! =" "]]; sonra echo $ UploadUrl json_out =` curl -s -T $ 1 -H "Yetkilendirme: OAuth $ TOKEN" $ uploadUrl` json_error = $ (checkError "$ json_out") eğer [[$ json_error! = ""]]; Ardından "$ PROJECT - Yandex.Disk hatası: $ json_error" postalama günlüğü " $ PROJECT - Yandex.Disk yedekleme hatası "" HATA $ FILENAME dosyası kopyalama. Yandex.Disk hatası: $ json_error "else logger" $ PROJECT - Dosya Yandex.Disk'e kopyalanıyor "mailing" $ PROJECT - Yandex.Disk yedekleme başarılı " " BAŞARILI dosya kopyası $ FILENAME "fi else echo" Bazı hatalar oluştu. Ayrıntılı bilgi için günlük dosyasını kontrol edin "fi) function backups_list () (# Uygulama dizinindeki tüm yedekleme dosyalarını arayın ve adlarını görüntüleyin : curl -s -H "Yetkilendirme: OAuth $ TOKEN" "https://cloud-api.yandex.net:443/v1/disk/resources?path=app:/&sort=created&limit=100" | tr "()," "\ n" | grep "isim [[: grafik:]] *.tar.gz" | kesme -d: -f 2 | tr -d "" ") function backups_count() (local bkps = $ (backups_list | wc -l) # Hem dosyaları hem de veritabanını yedeklersek 1 yedekte 2 dosyamız olur.Dolayısıyla yedekleme sayısı = dosya sayısı / 2: ifade $ bkps / 2) function remove_old_backups () (bkps = $ (backups_count) old_bkps = $ ((bkps - MAX_BACKUPS)) eğer ["$ old_bkps" -gt "0"]; o zaman günlükçü " Yandex'den eski yedekleri kaldırın ... Disk "# Eski yedekleri silme döngüsü: # Listedeki ilk dosyayı silme 2 * old_bkps kez i in` eval echo (1 .. $ ((old_bkps * 2))) `; do curl -X DELETE -s - H" Yetkilendirme: OAuth $ TOKEN "" https://cloud-api.yandex.net:443/v1/disk/resources?path=app:/$(backups_list | awk "(NR == 1)") & kalıcı olarak = true " bitti fi) günlükçü "--- $ PROJE BAŞLAT YEDEKLEME $ TARİH ---" günlükçü "Veritabanı dökümlerini boşaltma" mkdir $ BACKUP_DIR / $ DATE for `mysql -h $ MYSQL_SERVER -u $ MYSQL_USER -p $ MYSQL_PASSWORD -e" veritabanlarını göster; "| grep -v bilgi_şema | grep -v Veritabanı`; mysqldump yap -h $ MYSQL_SERVER -u $ MYSQL_USER -p $ MYSQL_PASSWORD $ i> $ BACKUP_DIR / $ DATE / $ i.sql; günlükçü yapıldı" Bir mysql arşivi oluşturun $ BACKUP_DIR / $ DATE-mysql- $ PROJECT.tar.gz "tar -czf $ BACKUP_DIR / $ DATE-mysql- $ PROJECT.tar.gz $ BACKUP_DIR / $ DATE rm -rf $ BACKUP_DIR / $ DATE logger " Bir dizin arşivi oluşturun $ BACKUP_DIR / $ DATE-files- $ PROJECT.tar.gz "tar -czf $ BACKUP_DIR / $ DATE-files- $ PROJECT.tar.gz $ DIRS DOSYA ADI = $ DATE-mysql- $ PROJECT.tar .gz kaydedici" Yandex.Disk mysql arşivine tıklayın $ BACKUP_DIR / $ DATE-mysql- $ PROJECT.tar.gz "backupName = $ DATE-mysql- $ PROJECT.tar.gz uploadDosyası $ BACKUP_DIR / $ DATE-mysql- $ PROJECT.tar.gz DOSYA ADI = $ DATE-files- $ PROJECT.tar.gz logger "Arşivi $ BACKUP_DIR / $ DATE-files- $ PROJECT.tar.gz ile Yandex.Disk'e yükleyin" backupName = $ DATE-files- $ PROJECT.tar. gz uploadFile $ BACKUP_DIR / $ DATE-files- $ PROJECT.tar.gz logger "Arşivleri diskten sil" find $ BACKUP_DIR -type f -name "* .gz" -exec rm "()" \; # Eski yedekleri Yandex.Disk'ten kaldırın (MAX_BACKUPS> 0 ise) [$ MAX_BACKUPS -gt 0] ise, kaldır_old_backups; fi logger "Yedekleme komut dosyasını sonlandır"
Ayrıca hazır bir tane indirebilirsiniz. Komut dosyası sunucuda bulunmalı, içindeki parametreleri kendinizle değiştirmeli, çalıştırma izni vermeli (chmod + x) ve cron'da günlük olarak yürütülecek şekilde ayarlanmalıdır. Bu tür birkaç görevi gerçekleştirmeyi planlıyorsanız, başlangıçları arasındaki süreyi (5-10 dakika) ayarlayın.
İÇİNDE modern dünya bilgi giderek daha fazla değer kazanıyor ve bunun kaybı ciddi finansal maliyetlere neden olabilir. Site, bir yedek kopyası veya sadece bir yedeği olan değerli bilgilerdir, bu makalede örnek olarak wordpress kullanarak yapacağız ve Yandex diskine yerleştireceğiz. İhtiyaçlarım için ortaya koyduğum ve uzun süredir başarılı bir şekilde kullanmakta olduğum süreci otomatikleştirme seçeneğini değerlendireceğim.
Aşamalar halinde hareket edeceğiz. İlk olarak, site ve veritabanı dosyalarını doğrudan yedekleme seçeneğini ele alalım. Ardından sitenizin wordpress'te düzenli yedeğini nasıl alacağınız sorusuna tam olarak cevap vereceğiz.
Burada tekerleği yeniden icat etmedim ama bundan faydalandım. standart bir şekilde dosyaları arşivleme - arşivleyici katran... Tüm yorumları ve açıklamaları hemen senaryoya yazacağım:
#! / bin / sh # Değişkenleri ayarlayın # Şu formatta geçerli tarih 2015-09-29_04-10 date_time = `date +"% Y-% m-% d_% H-% M "` # Yedeklemeyi nereye yerleştiriyoruz bk_dir = "/ mnt / backup / site1.ru "# Dosyaların bulunduğundan bir seviye daha yüksek dizin inf_dir =" / web / siteler / site1.ru / "# Dosyaların bulunduğu doğrudan dizinin adı dir_to_bk =" www "# Bir arşiv oluştur / usr / bin / tar -czvf $ bk_dir / www_ $ date_time.tar.gz -C $ inf_dir $ dir_to_bk
Çıkışta script çalıştıktan sonra www_2015-09-29_04-10.tar.gz adında bir klasörümüz var ve bunun içinde tüm içeriğin bulunduğu bir www klasörü olacak. Başlangıçta, bu klasör /web/sites/site1.ru/www adresinde bulunuyordu. Burada parametre ile tar uyguladım -İLE BİRLİKTE böylece arşivin tam yolu /web/sites/site1.ru değil, yalnızca www klasörü vardır. Sadece benim için daha uygun.
Bu betiği, mutlaka site değil, dosya arşivleri oluşturmak için ayrı olarak kullanabilirsiniz. onu koyduk cron ve düzenli arşivleme alıyoruz.
Şimdi bir veritabanı yedeklemesi için bir komut dosyası oluşturalım. Burada da özel bir şey yok, standart bir araç kullanıyorum mysqldamp:
#! / bin / sh # Değişkenleri ayarlayın # Şu formatta geçerli tarih 2015-09-29_04-10 date_time = `date +"% Y-% m-% d_% H-% M "` # Yedeklemeyi nereye yerleştiriyoruz bk_dir = "/ mnt / backup / site1.ru "# Database user user =" user1 "# User password password =" pass1 "# Yedekleme için veritabanı adı bd_name =" bd1 "# Veritabanını kaldırın / usr / bin / mysqldump -- opt -v - -databases $ bd_name -u $ kullanıcı -p $ şifre | / usr / bin / gzip -c> $ bk_dir / mysql_ $ date_time.sql.gz
Çıktıda, mysql_2015-09-29_04-10.sql.gz veritabanının dökümünü içeren bir dosyamız var. Döküm şurada saklanır: Metin formatı, herhangi bir düzenleyici tarafından açılabilir ve düzenlenebilir.
Oldukça uygun ve ücretsiz servis Ben bir indeksim, herkesin kullanabileceği bir disk. Ücretsiz olarak çok fazla alan verilmez, ancak bir siteyi wordpress'te yedeklemek için yeterlidir. Bu arada, her türlü promosyonun yardımıyla ücretsiz olarak 368 GB'ım var:
Ben ndeks.Disk webdav kullanılarak bağlanabilir. Sunucum CentOS 7, ona nasıl mount edeceğinizi anlatacağım. Öncelikle bağlanıyoruz. Ardından paketi kurun davfs2:
# yum -y davfs2'yi kurun
Şimdi diski monte etmeye çalışıyoruz:
# mkdir / mnt / yadisk # mount -t davfs https://webdav.yandex.ru / mnt / yadisk / Lütfen https://webdav.yandex.ru sunucusuyla kimlik doğrulaması yapmak için kullanıcı adını girin veya hiçbiri için enter tuşuna basın. Kullanıcı adı: Lütfen kullanıcının kimliğini doğrulamak için şifreyi girin [e-posta korumalı] https://webdav.yandex.ru sunucusuyla veya hiçbiri için enter tuşuna basın. Şifre: /sbin/mount.davfs: Uyarı: mtab'a giriş yazılamaz, ancak yine de dosya sistemini bağlar
ndex'im var.Disk / mnt / yadisk klasörüne monte edilmiştir.
Arşivleme işlemini otomatikleştirmek ve her seferinde kullanıcı adı ve şifre girmemek için, sonuna kullanıcı adı ve şifre ile yeni bir satır ekleyerek / etc / davfs2 / secrets dosyasını düzenleyin:
# mcedit / etc / davfs2 / sırlar / mnt / yadisk / [e-posta korumalı] parola
Artık diski monte ederken hiçbir soru sorulmayacak. Bir Yandex disk bağlantısı ekleyebilirsiniz. fstab böylece açılışta otomatik olarak bağlanır, ancak gereksiz buluyorum. Sürücüyü yedekleme komut dosyasına bağlarım ve bağlantısını keserim. Otomatik olarak monte etmek istiyorsanız, fstab'a ekleyin:
Https://webdav.yandex.ru / mnt / yadisk davfs rw, kullanıcı, _netdev 0 0
Ayrı olarak, sitenin yedek bir kopyasını oluşturmanın tüm unsurlarını demonte ettik, şimdi tüm bunları tek bir yerde toplamanın zamanı geldi. Aşağıdaki site yedekleme şemasını kullanıyorum:
Böyle bir şema ile, her ihtimale karşı en son 7 arşivi, içinde bulunulan ayın haftalık arşivini ve her ay için bir arşivi her zaman elimizin altında bulunduruyoruz. Örneğin, bir hafta önce bir yedekten bir şey almam gerektiğinde bu şema birkaç kez bana yardımcı oldu.
İşte bir wordpress sitesinin yedek kopyasını oluşturmak için 3 tam komut dosyası, bu benim en sık kullandığım motor, ancak gerçekte herhangi bir siteyi yedekleyebilirsiniz - joomla, drupal, modx, vb. Cms veya çerçeve çok önemli değil .
Web sitesi günlük yedekleme komut dosyası backup-day.sh:
gün"# Arşiv için dizin inf_dir =" / web / siteler / site1.ru / "# Dosyaların bulunduğu doğrudan dizinin adı dir_to_bk =" www "# Veritabanı kullanıcısı kullanıcı =" kullanıcı1 "# Kullanıcı şifresi şifresi =" pass1 "# Yedekleme için veritabanı adı bd_name = "bd1" # Yandex.disk montajı mount -t davfs https://webdav.yandex.ru / mnt / yadisk / # Kaynak arşiv oluştur / usr / bin / tar -czvf $ bk_dir / www_ $ date_time.tar.gz -C $ inf_dir $ dir_to_bk # Veritabanını boşaltın / usr / bin / mysqldump --opt -v --databases $ bd_name -u $ kullanıcı -p $ şifre | / usr / bin / gzip -c> $ bk_dir / mysql_ $ date_time.sql.gz # 7 günden eski arşivleri sil / usr / bin / find $ bk_dir -type f - zaman +7
Haftalık site yedekleme komut dosyası backup-week.sh:
#! / bin / sh # Değişkenleri ayarlayın # Şu formatta geçerli tarih 2015-09-29_04-10 date_time = `date +"% Y-% m-% d_% H-% M "` # Yedeklemeyi nereye yerleştiriyoruz bk_dir = "/ mnt / yadisk / site1.ru / hafta"# Arşiv için dizin inf_dir =" / web / siteler / site1.ru / "# Dosyaların bulunduğu doğrudan dizinin adı dir_to_bk =" www "# Veritabanı kullanıcısı kullanıcı =" kullanıcı1 "# Kullanıcı şifresi şifresi =" pass1 "# Yedekleme için veritabanı adı bd_name = "bd1" # Yandex.disk montajı mount -t davfs https://webdav.yandex.ru / mnt / yadisk / # Kaynak arşiv oluştur / usr / bin / tar -czvf $ bk_dir / www_ $ date_time.tar.gz -C $ inf_dir $ dir_to_bk # Veritabanını boşaltın / usr / bin / mysqldump --opt -v --databases $ bd_name -u $ kullanıcı -p $ şifre | / usr / bin / gzip -c> $ bk_dir / mysql_ $ date_time.sql.gz # 30 günden eski arşivleri sil / usr / bin / find $ bk_dir -type f -mzaman +30-exec rm() \; # Yandex.Disk umount / mnt / yadisk'i devre dışı bırakın
Aylık web sitesi yedekleme komut dosyası yedekleme-ay.sh:
#! / bin / sh # Değişkenleri ayarlayın # Şu formatta geçerli tarih 2015-09-29_04-10 date_time = `date +"% Y-% m-% d_% H-% M "` # Yedeklemeyi nereye yerleştiriyoruz bk_dir = "/ mnt / yadisk / site1.ru / ay"# Arşiv için dizin inf_dir =" / web / siteler / site1.ru / "# Dosyaların bulunduğu doğrudan dizinin adı dir_to_bk =" www "# Veritabanı kullanıcısı kullanıcı =" kullanıcı1 "# Kullanıcı şifresi şifresi =" pass1 "# Yedekleme için veritabanı adı bd_name = "bd1" # Yandex.disk montajı mount -t davfs https://webdav.yandex.ru / mnt / yadisk / # Kaynak arşiv oluştur / usr / bin / tar -czvf $ bk_dir / www_ $ date_time.tar.gz -C $ inf_dir $ dir_to_bk # Veritabanını boşaltın / usr / bin / mysqldump --opt -v --databases $ bd_name -u $ kullanıcı -p $ şifre | / usr / bin / gzip -c> $ bk_dir / mysql_ $ date_time.sql.gz # Yandex.disk'i devre dışı bırak umount / mnt / yadisk
/mnt/yadisk/site1.ru dizini oluşturmayı unutmayın bir Yandex diskinde ve içinde 3 klasör daha var: gün, hafta, ay:# cd /mnt/yadisk/site1.ru && mkdir gün hafta ay
Şimdi, otomasyon için bu 3 dosyayı şuraya ekleyin: cron:
# mcedit / etc / crontab # yandex.disk'e site yedeklemesi # her gün 04:10 am 10 4 * * * root /root/bin/backup-day.sh> / dev / null 2> & 1 # haftalık 4: 20 am Pazar 20 4 * * 0 root /root/bin/backup-week.sh> / dev / null 2> & 1 # aylık 4:30'da ayın 1'inde 30 4 1 * * root / root / bin / yedekleme ayı .sh> / dev / null 2> & 1
İşte bu, wordpress'imiz güvenilir bir şekilde yedekleniyor. Teorik olarak, burada postaya bir bildirim eklemeniz gerekiyor, ancak bunu yapacak zamanım yok. Ve birkaç aylık kullanım için tek bir başarısızlık yaşamadım.
Şimdi bir siteyi bir yedekten geri yüklemeniz gerektiğinde seçeneği düşünelim. Bunun için her iki arşive de ihtiyacımız var: kaynaklar ve bir veritabanı. Prensip olarak, herhangi bir yerde açabilirsiniz. Pencerelerde, ücretsiz 7zip arşivleyici ile arşivler açılır. Düz metin biçimindeki veritabanı dökümü, not defteri ile açılabilir, kopyalanıp phpmyadmin'e yapıştırılabilir.
Bu yüzden birçok kurtarma seçeneği olabilir ve bu yaklaşımı sevdiğim şey bu. Tüm dosyalar açık formdadır, elinizdeki herhangi bir yolla onlarla çalışabilirsiniz.
Burada, sunucu konsolundaki bir arşivden dosyaların nasıl çıkarılacağına dair bir örnek verilmiştir. www dizinini yedekten çıkarın:
# tar -xzvf www_2015-10-01_04-10.tar.gz
Dosyalar www klasörüne çıkarılır. Artık site klasörüne kopyalanabilirler.
Veritabanını geri yüklemek için aşağıdaki gibi ilerliyoruz. İlk olarak, arşivi açın:
# gunzip mysql_2015-10-01_04-10.sql.gz
Şimdi dökümü veritabanına dolduralım:
# mysql --host = localhost --user = user1 --password = pass1 bd1; MariaDB [(none)]> kaynak mysql_2015-10-01_04-10.sql;
İşte bu, veritabanı geri yüklendi.
Lütfen veritabanının orijinal adıyla veritabanına geri yükleneceğini ve sunucuda varsa içeriğini değiştireceğini unutmayın. Bir veritabanını diğerine geri yüklemek için, dökümün başlangıcını düzenlemeniz ve oradaki veritabanının adını yenisiyle değiştirmeniz gerekir. Kurtarma farklı bir sunucuda gerçekleşirse, önemli değil.
Bu yüzden wordpress motorunu kullanarak site ve veritabanı yedekleri oluşturma seçeneklerini örnek olarak inceledik. Bu durumda, sadece standart araçlar sunucu. Örnek olarak, Index.Disk'in kopyalarını depolamak için bir alıcı kullandık, ancak hiçbir şey onu diğerine uyarlamamızı engelleyemez. Ayrı bir sert olabilir veya Harici Sürücü, bir sunucuya bağlanabilen başka bir bulut depolama alanı.
Yedek oluşturma şeması, neredeyse süresiz olarak geri dönmenize izin verir. Parametreyi değiştirerek arşivlerin derinliğini kendiniz ayarlayabilirsiniz. zaman senaryoda. Örneğin günlük bir arşivi benim yaptığım gibi 7 gün değil, böyle bir ihtiyacınız varsa 30 gün saklayabilirsiniz. Öyleyse dene, kendine göre uyarla. Çalışma hakkında yorumlarınız, hatalarınız veya işlevselliği geliştirmek için önerileriniz varsa, düşüncelerinizi yorumlarda paylaşın, bunları duymaktan memnuniyet duyacağım.
Merhabalar, blogumun sevgili okuyucuları. Dosyaları Yandex sunucusunda saklamanıza izin veren bir program duymuşsunuzdur. Değilse, soft.yandex.ru'ya hoş geldiniz - orada.
İşte bu kadar. Birkaç gün önce sitelere göz atarken, sitenin yedek bir kopyasını Yandex diskine kaydetmenizi sağlayan bir komut dosyasının yayınlandığı bir bloga girdim. Bu yazıda detaylı olarak bahsedeceğim.
İlk önce mysql sunucusunun adresini değiştirmeniz gerekir. Çoğu durumda, bu localhost'tur, bu yüzden onu orada bıraktım, eğer farklıysa, onu kendimiz ile değiştiririz.
$ dbhost = "localhost"; // MySQL sunucu adresi.
Aşağıdaki satırda, "database_user" ifadesini mysql veritabanı kullanıcı adı değerinizle değiştirin.
"database_name", mysql veritabanının adıdır.
"site_dear_hear" yerine diskin kökünden siteye giden yolumuzu ekliyoruz.
Bundan sonra Yandex diskini kurmaya devam edin:
Her şey. Dosyayı kaydedip sunucuya yüklüyoruz.
Sitenin kök dizinine yüklemenizi önermiyorum, çünkü her türlü robot sürekli olarak onunla iletişim kuracak ve bu da Yandex diskinin gereksiz yedek kopyalarla dolmasına neden olacaktır. Bir klasör oluşturmak daha iyidir, örneğin "a3hd7siq8a7s9xeeewwwerw-0-032-_2", böylece sizden ve cran'dan başka kimse nerede olduğunu bilmez.
Cran bir iş planlayıcıdır: özel program, bir programa göre komut dosyalarının başlatılmasını ayarlayabilirsiniz, ancak nasıl kullanılacağını bilmiyorum, bu yüzden burada yardımcı olamam.
Muhtemelen zaten beş sitem olduğunu biliyorsunuzdur. Doğal olarak, bunları ayrı ayrı çalıştırmaktan yorulursunuz, ancak aynı makalede, sırayla diğer tüm komut dosyalarını başlatan ikinci bir komut dosyasının yayınlanmış olması iyi bir şeydir.
Beşten az siteniz varsa, şuna benzeyen satırları kaldırmanız yeterlidir:
Eko ""; $ yanıtı = file_get_contents ("http://site5.ru/beckup.php"); echo iconv ("Windows-1251", "utf-8", $ yanıtı);
.рф bölgesinde bir siteniz varsa, adresi kaydetmeden önce Panycode'a çevirmeniz gerekecektir.
Umarım bu makale size yardımcı olmuştur.
Yorumlarınızı bekliyorum.
İlgili Makaleler: | |
Bir defter için bir kapak nasıl yapılır Bir defter için bir kapak güzeldir
Okul zamanı tüm hızıyla devam ediyor ve çocuk öğrenme havasında değil mi? Yükseltmek ... Bir flash sürücüden elektronik imza nasıl kullanılır
Kural olarak, dijital imza bir USB çubuğuna kaydedilir .... Telgraf - Telegram Ling'deki metinleri biçimlendirme ve yayınlama hizmeti, tüm kullanıcı yayınlarına başlık verir
Özel verileri almak her zaman bilgisayar korsanlığı yapmak anlamına gelmez - bazen... |