[Python] Windows üzerinden yaptığınız değişiklikleri yedekleme

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 73

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Bu Python kodu, belirli klasörlerde yapılan değişiklikleri izlemek ve bu değişiklikleri bir yedekleme dizininde saklamak için geliştirilmiştir. Kod, verilen klasörlerdeki dosyaların yeni, değiştirilmiş veya silinmiş olup olmadığını kontrol eder ve bu duruma göre yedekleme işlemi gerçekleştirir.

Kodun işleyişi şu şekildedir:

  • <li data-xf-list-type="ul">Belirtilen kaynak klasörlerde (örneğin D:\1-99\01.Svn\2.Client) yapılan değişiklikler izlenir. <li data-xf-list-type="ul">Yeni eklenen veya değiştirilmiş dosyalar, yedekleme dizinine (D:\backup) kopyalanır. <li data-xf-list-type="ul">Kaynak klasörde silinmiş dosyalar varsa, bu dosyalar yedekleme dizininden de kaldırılır. <li data-xf-list-type="ul">Tüm değişiklikler (eklenen, değiştirilen ve silinen dosyalar), changed_files_log.txt dosyasına kaydedilir.
Bu kod, sadece değişen dosyaların yedeklenmesini sağlar ve gereksiz dosya kopyalama işlemlerini önler, böylece yedekleme işlemi daha verimli bir şekilde gerçekleştirilir.

Bu süreç sayesinde, yeni bir sistem eklemeden önce mevcut sistemin sorunsuz halini yedekleyebilirsiniz. Böylelikle, yapılacak değişikliklerin ardından herhangi bir hata veya sorun oluşması durumunda, önceki sürüme geri dönebilir ve değişiklikleri analiz edebilirsiniz. Bu yaklaşım, sürekli olarak gereksiz dosya yedeklemenin önüne geçerek depolama ve zaman açısından önemli tasarruflar sağlar. Ayrıca, değişikliklerin detaylı bir kaydı tutulduğu için, geçmişte yapılan düzenlemeler üzerinde tam kontrol ve izlenebilirlik elde edersiniz. Bu da sistem yönetimini daha güvenilir ve profesyonel hale getirir.

Klasörler'de veya dosyalar da herhangi bir değişiklik olmaması durumunda ;

202970_c7fd49aa45c7d3bb6609466cfea12968.png


Herhangi bir klasörde veya dosyada değişiklik meydana geldiği durumda;
py çıktısı :
202976_429afc6b2534fbd3320aa66b99eebee5.png


changed_files_log.txt dosya çıktısı :

202988_9b4ec50b696b0b4093073cd3ddbc651e.png





Kod:
import os import shutil from datetime import datetime # Yedekleme dizini (değişiklikleri bu dizine yedekleyecek) BACKUP_DIR = r"D:\backup" # İzlenecek dizinler ve klasörler WATCH_DIRS = [     (r"D:\1.klasor"), # siz belirleyin     (r"D:\1.klasor"), # siz belirleyin ] def backup_changes(src_dir, folder_name, log_file_path):     src_path = os.path.join(src_dir, folder_name)     backup_path = os.path.join(BACKUP_DIR, folder_name)     changes_made = False     # Yedekleme dizini yoksa oluştur     if not os.path.exists(backup_path):         os.makedirs(backup_path)     # Mevcut dosyaları karşılaştır     for root, _, files in os.walk(src_path):         rel_path = os.path.relpath(root, src_path)         backup_root = os.path.join(backup_path, rel_path)         if not os.path.exists(backup_root):             os.makedirs(backup_root)         for file_name in files:             src_file = os.path.join(root, file_name)             backup_file = os.path.join(backup_root, file_name)             if (not os.path.exists(backup_file) or                 os.path.getmtime(src_file) != os.path.getmtime(backup_file) or                 os.path.getsize(src_file) != os.path.getsize(backup_file)):                 shutil.copy2(src_file, backup_file)                 changes_made = True                 print(f"Yedeklendi: {src_file} -&gt; {backup_file}")                 with open(log_file_path, 'a', encoding='utf-8') as log_file:                     log_file.write(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - Yedeklendi: {src_file} -&gt; {backup_file}\n")     for root, _, files in os.walk(backup_path):         rel_path = os.path.relpath(root, backup_path)         src_root = os.path.join(src_path, rel_path)         for file_name in files:             backup_file = os.path.join(root, file_name)             src_file = os.path.join(src_root, file_name)             if not os.path.exists(src_file):                 os.remove(backup_file)                 changes_made = True                 print(f"Silindi: {backup_file}")                 with open(log_file_path, 'a', encoding='utf-8') as log_file:                     log_file.write(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - Silindi: {backup_file}\n")     if not changes_made:         with open(log_file_path, 'a', encoding='utf-8') as log_file:             log_file.write(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - {folder_name} klasöründe herhangi bir değişiklik yapılmadı.\n")         print(f"{folder_name} klasöründe herhangi bir değişiklik yapılmadı.") if __name__ == "__main__":     timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")     print(f"Yedekleme işlemi başlatıldı: {timestamp}")     log_file_path = os.path.join(BACKUP_DIR, 'changed_files_log.txt')     with open(log_file_path, 'w', encoding='utf-8') as log_file:         log_file.write(f"Yedekleme işlemi başlatıldı: {timestamp}\n")     for watch_dir, folder in WATCH_DIRS:         backup_changes(watch_dir, folder, log_file_path)     print("Yedekleme işlemi tamamlandı.")

Python ile Windows Üzerinde Değişiklikleri Yedekleme Yöntemleri

Metin2 özel sunucu geliştirme sürecinde, özellikle game server programming ve source edit gibi işlemler sırasında yapılan değişikliklerin korunması son derece kritiktir. Bu süreçte Python dili, güçlü kütüphaneleri sayesinde Windows işletim sistemi üzerinde çalışan sistemler için otomatik yedekleme çözümleri geliştirmenizi sağlar. Bu makalede, Python kullanarak Windows üzerinde yaptığınız değişiklikleri nasıl yedekleyebileceğinizi detaylı olarak ele alacağız.

Python ile Yedekleme İşlemine Giriş

Python, özellikle dosya işlemleri ve sistem otomasyonları için çok güçlüdür. Py root dizinlerinde yapılan değişikliklerin takibi ve yedeklenmesi, Python GUI veya komut satırı tabanlı betiklerle kolayca sağlanabilir. Bu tür sistemler, metin2 server src üzerinde çalışırken yapılan küçük ama kritik değişikliklerin kaybolmasını önler.

Windows'ta Dosya Takibi ve Kopyalama

Python’un shutil ve os modüllerini kullanarak, belirli bir dizin yapısında yapılan değişiklikleri takip edebilir ve bu dosyaları belirli bir yere kopyalayabilirsiniz. Örneğin, uiscript dosyalarında veya pack dosyalarında yapılan değişiklikler için bir zaman damgası (timestamp) tabanlı yedekleme sistemi kurulabilir. Bu sayede hangi dosyanın ne zaman değiştirildiği net bir şekilde görülebilir.

Otomatik Yedekleme Script'i Oluşturmak

Python ile yazılan bir script, belirli aralıklarla dosya sistemini tarayabilir ve değişen dosyaları bir yedekleme dizinine kopyalayabilir. Bu script, metin2 development sürecinde veri kaybını önlemek için çok faydalıdır. Örnek bir yapı şu şekilde olabilir:

- Değişiklik yapılan dosyaları algıla.
- Zaman damgası ile adlandırılmış klasörlere kopyala.
- Eski yedekleri belli bir süre sonra silerek disk alanını koru.

Python GUI ile Kullanıcı Dostu Arayüz

Python’da tkinter gibi GUI kütüphaneleri kullanarak, kullanıcıların kolayca yedekleme işlemi yapabileceği bir arayüz geliştirilebilir. Bu arayüz sayesinde, metin2 compile veya client src üzerinde yapılan değişiklikler daha kontrollü bir şekilde takip edilebilir. Böylece hem teknik ekip hem de test süreçlerinde çalışan diğer kişiler değişiklikleri rahatça görebilir.

Yedekleme Stratejileri

Yedekleme stratejisi, geliştirme sürecinde büyük önem taşır. Game core, db core veya auth sistemlerinde yapılan değişiklikler için farklı stratejiler uygulanabilir. Örneğin, kritik sistem dosyaları için anlık yedekler, UI dosyaları için haftalık yedekler alınabilir. Bu sayede hem verimli hem de güvenli bir geliştirme süreci sağlanır.

Sonuç

Python, Windows ortamında metin2 development sırasında yapılan değişikliklerin yedeklenmesi için ideal bir araçtır. Hem komut satırı hem de grafiksel arayüzlerle kolayca entegre edilebilir. Bu sayede, C++ system ile birlikte çalışan Python system yapıları daha güvenli ve organize bir hale getirilebilir.


Backup Methods for Changes Made via Windows Using Python

In the process of developing Metin2 private servers, especially during operations like game server programming and source edit, preserving the changes made is critical. During this process, Python, with its powerful libraries, allows you to develop automatic backup solutions for systems running on the Windows operating system. In this article, we will detail how you can backup changes made on Windows using Python.

Introduction to Backup Operations with Python

Python is particularly powerful for file operations and system automation. Tracking and backing up changes made within Py root directories can be easily achieved using command-line scripts or Python GUI. Such systems prevent the loss of small but crucial changes made while working on metin2 server src.

File Tracking and Copying on Windows

Using Python’s shutil and os modules, you can monitor changes made in a specific directory structure and copy these files to a designated backup location. For instance, a timestamp-based backup system can be set up for changes made to uiscript or pack files. This way, the exact time each file was modified becomes clearly visible.

Creating an Automatic Backup Script

A Python-written script can scan the file system at specified intervals, detect changed files, and copy them into a backup directory. This script proves very useful in the metin2 development process by preventing data loss. An example structure could be as follows:

- Detect files that have been changed.
- Copy them into timestamp-named folders.
- Delete older backups after a certain period to preserve disk space.

User-Friendly Interface with Python GUI

GUI libraries like tkinter in Python allow the development of user-friendly interfaces enabling users to perform backup operations easily. With such an interface, changes made to metin2 compile or client src can be tracked more systematically. Thus, both technical teams and other personnel involved in testing processes can easily view changes.

Backup Strategies

Backup strategies are of great importance during the development process. Different strategies can be applied for changes made to game core, db core, or auth systems. For example, instant backups might be taken for critical system files, whereas weekly backups might be sufficient for UI files. This ensures both efficient and secure development processes.

Conclusion

Python is an ideal tool for backing up changes made during metin2 development in the Windows environment. It can be seamlessly integrated with both command-line and graphical interfaces. This allows Python system structures working alongside C++ system to become safer and more organized.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt