m0ris
Birisi mi Spawnlandı?
- Katılım
- 4 Haziran 2020
- Mesajlar
- 2
- Elmaslar
- 3
- Puan
- 6.235
- Yaş
- 125
- Minecraft
- moris
Discord:
moris#6054
Bu konuda size rclone ve screen kullanarak her gün ya da istenilen sıklıkta sunucu yedekeleme, buluta yükleme ve minecraft sunucusunu yeniden başlatan bir sistem kurmayı göstereceğim. Takıldığınız bir yer olursa discorddan ulaşabilirsiniz.
Google Api Console
1.
giriş yap.
2.Create Porject'e bas ve bir proje oluştur.
3.Google Drive Api'ını aktifleştirelim.
4.Sol tarafdaki menüden "Credentials" kısmına tıklayıp gif'teki gibi adımları takip edin. (Bu adımın sonunda size verdiği client-id ve client-secret ilerde lazım olacağı için bir yere kaydedin.)
5.Sol taraftaki menüden OAuth censent screen kısmından "publish app" tuşuna basarak uygulamayı aktif hale getiriyoruz.
Rclone configini yapılandırmaya geçebiliriz. Kurulum yaparken kendi windows bilgisayarımızı da kullanacağız, onun için
işletim sistemin uygun rclone'u kendi bilgisayarınıza indirin ve kendi masaüstünüze çıkartın. Şimdilik kenarda dursun ilerleyen adımlarda aktivasyon için gerekli olacak.
Şimdi linux için rclone kurulumuna başlayabiliriz.
1.Kurulumu yaptıktan sonra rclone config yazarak ayarlamaya başlayalım.
2.New remote yani "n" yazıp enter'a basıyoruz.
3.İsim girmemizi istiyor. Bu konu anlatımı için ben "test" yazdım.
4.Bu adımda hangi depolama servisini kullanmak istediğimizi soruyor. Google Drive'ı listede bulup numarasını giriyoruz.
5.Bizden client-id istiyor bunu yazının başında Google Api Console'dan oluşturmuştuk.
6.Bizden client-secret istiyor bunu da yazının başında anlattığım gibi Google Api Console'dan alıyoruz.
7.Scopes; Bu adımda uygulamaya drive üzerinden tam okuma ve yazma yetkisi veriyoruz. "1" yazıp devam ediyoruz.
8.service_account_file; burayı boş geçebilirsiniz.
9.Edit advanced config; "n" diyerek devam ediyoruz.
10.Bu adımda yetkilendirme yapmamız gerekiyor. "n" diyerek devam ediyoruz.
11.Ekran görüntüsünde gösterdiğim gibi tokeni kopyalıyoruz ve bir sonraki adıma geçiyoruz. (ctrl-c yaparak kopyalayınca rclone configinden çıkıyorsa seçtikten sonra sağ tıklayarak da kopyalabilirsiniz.)
12.Yetkilendirme için kendi bilgisayarımıza geçiyoruz konunun başında rclon'un windows için olan versiyonunu indirip masaüstüne çıkartmıştık. Yeni bir komut satırı açıp masaüstünde çıkarttığımız klasöre geçiyoruz. Arama kısmına cmd yazarak komut satırını açıyoruz. Dizin değiştirmek için sırasıyla;
burdaki "rclone-v1.67.0-windows-amd64" windows için indirip masaüstüne çıkarttığımız klasörün adı, sizde farklı bir sürüm olabilir.
Yetkilendirme için gif'te gösterdiğim gibi adımları takip edin.
Yetkilendirmeyi yaptıktan sonra son 2 adım kalıyor bir tanesi Bu drive'ı paylaşımlı mı ayarlamak istiyorsunuz? n diyerek devam ediyoruz. Son adımda da bize yaptıklarımızın bir özetini gösteriyor "y" diyerek devam ediyoruz ve kurulum bitiyor, "q" diyerek rclone'dan çıkabiliriz.
Rclone kurulumu bittikten sonra geriye sadece otomasyon kalıyor. Buna geçmeden önce rclone'un çalışıp çalışmadığını bir test edin. Olduğunuz dizine deneme.txt dosyası oluşturup rclone üzerinden drive'a yükleyin.
Ben rclon configini ayarlarken ilk adımda ismini test koyduğum için kodun son hali bu olacaktır;
Bu komutun çıktısı olarak google drive'mızda Yedek klasörü içinde bir deneme.txt dosyası olması gerekiyor. Eğer dosya başarıyla yüklendiyse diğer adımlara geçebilirsiniz.
Otomasyon
Ben sunucumda screen kullanıyorum o yüzden otomasyon scriptini screen kullanarak yazdım eğer tmux kullanıyorsanız biraz değiştirmeniz gerekiyor.
Otomasyon için creontab'e eklemeden önce manuel olarak test edin. Yukarıdaki script için öncelikle değiştirmeniz gereken parametreleri kendi sunucunuza göre güncelleyin. Ardından SCREEN_NAME değişkeninde yazan isimde bir screen açıp minecraft sunucunuzu çalıştırın ve screen oturumundan deattach olun (ctrl + a + d).
Minecraft sunucunuz tam bir şekilde açıldıktan sonra indirdiğiniz scriptin olduğu dizine gelip scripte yetki verin. Ardından çalıştırın.
Her şeyi eksiksiz anlattıysam ve siz de eksiksiz takip ettiyseniz script çalıştıktan bir süre sonra backups adında bir klasörün içinde sunucu klasörünün hepsi zip ile şifrelenmiş bir şekilde olması, aynı şekilde drive'a da yüklenmiş olması gerekiyor.
Son adım olarak crontab'e ekleyerek istediğimiz sıklıkta çalışmasını sağlayalım. Ben her gece (makinenin saatiyle) gece 4'te yedek alması için ayarlardım siz isterseniz değiştirebilirsiniz.
1.Crontab editörüne kodu yapıştırıp kaydedip çıkıyoruz.
"/home/moris/backup.sh" benim yedekleme scriptimin dosya yolu siz kendi scriptinizi nereye yüklediyseniz onla değiştirmeniz gerekiyor.
0 4 * * * her ayın her gününün gece 4'ünde yolunu gösterdiğimiz scriptin çalışacağını gösteriyor. Saati isteğinize göre değiştirebilirsiniz.
Bu komutla kaydettiğiniz crontableri görebilirsiniz.
Not: Script istediğiniz saatte değil alakasız bir saatte çalışıyorsa büyük ihtimalle makinenin zaman dilimi farklıdır makinenin zaman dilimini türkiye zaman dilimine almanız gerekir.
Yakın zamanda otomatik olarak eski yedekleri de silen bir script paylaşacağım.
Mega Kullanarak Yedekleme
1.rclone config,
2.new remote "n",
3.Buraya bir isim girmeni istiyor "mega" olsun,
4.Listeden mega'yı bul ve numarasını gir,
5.Senden kullanıcı adını yani megaya kayıt olduğun e postayı istiyor,
6.Yes, type in my own password, "y" diyerek devam et
7.Mega hesabının şifresini istiyor onu giriyorsun
8.Tekrar mega hesabının şifresini istiyor,
9.Edit Advanced config kısmına "n" diyerek devam ediyorsun,
10. Son adımda "y" diyerek devam ediyorsun ve kurulum bitiyor.
11. "q" diyerek rclone configinden çıkabilirsin.
Mega kurulumu yapması daha basit ama mega kullanacaksanız yedekleme scriptinde 9. satırı değiştirmeniz gerekiyor. Ben yukarda "mega" adını kullanarak kurulum yaptım o yüzden test:/ olan yeri mega:/ olarak değiştiriyorum. Siz de mega kullanacaksanız buna dikkat etmeniz yeterli.
Script dosyası için
.
Meraklısına kaynaklar;
Google Api Console
1.
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
2.Create Porject'e bas ve bir proje oluştur.
3.Google Drive Api'ını aktifleştirelim.
Rclone configini yapılandırmaya geçebiliriz. Kurulum yaparken kendi windows bilgisayarımızı da kullanacağız, onun için
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Şimdi linux için rclone kurulumuna başlayabiliriz.
Kod:
sudo -v ; curl https://rclone.org/install.sh | sudo bash
1.Kurulumu yaptıktan sonra rclone config yazarak ayarlamaya başlayalım.
Kod:
rclone config
3.İsim girmemizi istiyor. Bu konu anlatımı için ben "test" yazdım.
4.Bu adımda hangi depolama servisini kullanmak istediğimizi soruyor. Google Drive'ı listede bulup numarasını giriyoruz.
5.Bizden client-id istiyor bunu yazının başında Google Api Console'dan oluşturmuştuk.
6.Bizden client-secret istiyor bunu da yazının başında anlattığım gibi Google Api Console'dan alıyoruz.
7.Scopes; Bu adımda uygulamaya drive üzerinden tam okuma ve yazma yetkisi veriyoruz. "1" yazıp devam ediyoruz.
8.service_account_file; burayı boş geçebilirsiniz.
9.Edit advanced config; "n" diyerek devam ediyoruz.
10.Bu adımda yetkilendirme yapmamız gerekiyor. "n" diyerek devam ediyoruz.
11.Ekran görüntüsünde gösterdiğim gibi tokeni kopyalıyoruz ve bir sonraki adıma geçiyoruz. (ctrl-c yaparak kopyalayınca rclone configinden çıkıyorsa seçtikten sonra sağ tıklayarak da kopyalabilirsiniz.)
12.Yetkilendirme için kendi bilgisayarımıza geçiyoruz konunun başında rclon'un windows için olan versiyonunu indirip masaüstüne çıkartmıştık. Yeni bir komut satırı açıp masaüstünde çıkarttığımız klasöre geçiyoruz. Arama kısmına cmd yazarak komut satırını açıyoruz. Dizin değiştirmek için sırasıyla;
Kod:
cd Desktop
cd rclone-v1.67.0-windows-amd64
Yetkilendirme için gif'te gösterdiğim gibi adımları takip edin.
Rclone kurulumu bittikten sonra geriye sadece otomasyon kalıyor. Buna geçmeden önce rclone'un çalışıp çalışmadığını bir test edin. Olduğunuz dizine deneme.txt dosyası oluşturup rclone üzerinden drive'a yükleyin.
Kod:
rclone copy <dosya_adi> <kurulumda_koydugunuz_ad>:/<drive_klasor_adi>
Kod:
rclone copy deneme.txt test:/Yedek
Otomasyon
Ben sunucumda screen kullanıyorum o yüzden otomasyon scriptini screen kullanarak yazdım eğer tmux kullanıyorsanız biraz değiştirmeniz gerekiyor.
Bash:
#!/bin/bash
#10.07.2024 Moris6054
# Kullanici ayarlari ve dosya yollari
MINECRAFT_DIR="/home/moris/sunucu" # Minecraft sunucunun oldugu klasor
BACKUP_DIR="/home/moris/backups" # Yedeklerin lokal tutulacagi klasor
DATE=$(date +%Y-%m-%d) # Gunun tarihi
BACKUP_NAME="backup_$DATE.zip" # Yedek dosyasinin adi
REMOTE_DIR="test:/Yedekler/" # Google Drive dizini (rclone ile tanimli)
SCREEN_NAME="test" # Screen oturmunun adi
START_SH="start.sh" # Sunucunu klasorunun içindeki, sunucuyu baslatan script. start.sh/baslat.sh vb
# Sunucuyu durdurma
screen -S $SCREEN_NAME -X stuff "save-all\n"
sleep 5
screen -S $SCREEN_NAME -X stuff "stop\n"
echo "Sunucunun tam kapanmasi bekleniyor..."
#Sunucunun tam kapanmasini bekleme
while pgrep -f "java.*minecraft" > /dev/null; do
echo "Sunucu kapaniyor, lutfen bekleyin..."
sleep 10
done
echo "Sunucu kapandi yedekleme basliyor"
#Aktif screen oturumunu kapatma
screen -S $SCREEN_NAME -X exit
# Yedekleme klasoru eger yoksa olusturulmasi
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p $BACKUP_DIR
fi
# Sunucu klasorunu zip ile sikistirma
cd $MINECRAFT_DIR
zip -r $BACKUP_DIR/$BACKUP_NAME .
echo "Zip ile sikistirma ok."
# Yedegi Google Drive'a yukleme
rclone copy $BACKUP_DIR/$BACKUP_NAME $REMOTE_DIR
echo "Yedek Drive'a yuklendi"
# Minecraft sunucusunu start.sh ile yeniden baslatma
cd $MINECRAFT_DIR
screen -dmS $SCREEN_NAME ./$START_SH
echo "Yedekleme ve yeniden baslatma islemi tamamlandi."
MINECRAFT_DIR="/home/moris/server" # Minecraft sunucunun oldugu klasor
BACKUP_DIR="/home/moris/backups" # Yedeklerin lokal tutulacagi klasor
DATE=$(date +%Y-%m-%d) # Değiştirmenize gerek yok.
BACKUP_NAME="backup_$DATE.zip" # Değiştirmenize gerek yok.
REMOTE_DIR="test:/Yedekler/" # Google Drive dizini (rclone ile tanimli) - burdaki "test" sizin rclone configini yaparken ilk adımda girdiğiniz ad. "Yedekler" yazan kısım drive'daki yedeklerin yükleneceği klasörün adı.
SCREEN_NAME="test" # Screen oturmunun adi - ben minecraft sunucusunu çalıştırırken hep aynı isimde bir screen açıyorum burda da bunu kullanıyorum.
START_SH="start.sh" # Sunucunu klasorunun içindeki, sunucuyu baslatan script. start.sh/baslat.sh vb - sadece dosyanın uzantısı dahil tam adı! tam dosya yolu değil!
BACKUP_DIR="/home/moris/backups" # Yedeklerin lokal tutulacagi klasor
DATE=$(date +%Y-%m-%d) # Değiştirmenize gerek yok.
BACKUP_NAME="backup_$DATE.zip" # Değiştirmenize gerek yok.
REMOTE_DIR="test:/Yedekler/" # Google Drive dizini (rclone ile tanimli) - burdaki "test" sizin rclone configini yaparken ilk adımda girdiğiniz ad. "Yedekler" yazan kısım drive'daki yedeklerin yükleneceği klasörün adı.
SCREEN_NAME="test" # Screen oturmunun adi - ben minecraft sunucusunu çalıştırırken hep aynı isimde bir screen açıyorum burda da bunu kullanıyorum.
START_SH="start.sh" # Sunucunu klasorunun içindeki, sunucuyu baslatan script. start.sh/baslat.sh vb - sadece dosyanın uzantısı dahil tam adı! tam dosya yolu değil!
Otomasyon için creontab'e eklemeden önce manuel olarak test edin. Yukarıdaki script için öncelikle değiştirmeniz gereken parametreleri kendi sunucunuza göre güncelleyin. Ardından SCREEN_NAME değişkeninde yazan isimde bir screen açıp minecraft sunucunuzu çalıştırın ve screen oturumundan deattach olun (ctrl + a + d).
Minecraft sunucunuz tam bir şekilde açıldıktan sonra indirdiğiniz scriptin olduğu dizine gelip scripte yetki verin. Ardından çalıştırın.
Kod:
chmod +x 777 backup.sh
Kod:
./backup.sh
Son adım olarak crontab'e ekleyerek istediğimiz sıklıkta çalışmasını sağlayalım. Ben her gece (makinenin saatiyle) gece 4'te yedek alması için ayarlardım siz isterseniz değiştirebilirsiniz.
1.Crontab editörüne kodu yapıştırıp kaydedip çıkıyoruz.
Kod:
sudo Crontab -e
Kod:
0 4 * * * sudo /bin/bash /home/moris/backup.sh
0 4 * * * her ayın her gününün gece 4'ünde yolunu gösterdiğimiz scriptin çalışacağını gösteriyor. Saati isteğinize göre değiştirebilirsiniz.
Kod:
sudo crontab -l
Not: Script istediğiniz saatte değil alakasız bir saatte çalışıyorsa büyük ihtimalle makinenin zaman dilimi farklıdır makinenin zaman dilimini türkiye zaman dilimine almanız gerekir.
Yakın zamanda otomatik olarak eski yedekleri de silen bir script paylaşacağım.
Mega Kullanarak Yedekleme
1.rclone config,
2.new remote "n",
3.Buraya bir isim girmeni istiyor "mega" olsun,
4.Listeden mega'yı bul ve numarasını gir,
5.Senden kullanıcı adını yani megaya kayıt olduğun e postayı istiyor,
6.Yes, type in my own password, "y" diyerek devam et
7.Mega hesabının şifresini istiyor onu giriyorsun
8.Tekrar mega hesabının şifresini istiyor,
9.Edit Advanced config kısmına "n" diyerek devam ediyorsun,
10. Son adımda "y" diyerek devam ediyorsun ve kurulum bitiyor.
11. "q" diyerek rclone configinden çıkabilirsin.
Mega kurulumu yapması daha basit ama mega kullanacaksanız yedekleme scriptinde 9. satırı değiştirmeniz gerekiyor. Ben yukarda "mega" adını kullanarak kurulum yaptım o yüzden test:/ olan yeri mega:/ olarak değiştiriyorum. Siz de mega kullanacaksanız buna dikkat etmeniz yeterli.
Bash:
Google Drive için;
REMOTE_DIR="test:/Yedekler/" # Google Drive dizini (rclone ile tanimli)
Mega için;
REMOTE_DIR="mega:/Yedekler/" # Mega dizini (rclone ile tanimli)
Script dosyası için
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Meraklısına kaynaklar;
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Ekli dosyalar
Son düzenleme: