Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

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

  • Konuyu başlatan Konuyu başlatan theay
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 9
  • Görüntüleme Görüntüleme 1K
5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

theay

mester2.tc
Fahri Üye
TM Üye
Katılım
2 Mar 2022
Konular
37
Mesajlar
645
Çözüm
6
Online süresi
1mo 6d
Reaksiyon Skoru
323
Altın Konu
0
Başarım Puanı
136
MmoLira
8,465
DevLira
75
Ticaret - 0%
0   1   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

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:

  • Belirtilen kaynak klasörlerde (örneğin D:\1-99\01.Svn\2.Client) yapılan değişiklikler izlenir.
  • Yeni eklenen veya değiştirilmiş dosyalar, yedekleme dizinine (D:\backup) kopyalanır.
  • Kaynak klasörde silinmiş dosyalar varsa, bu dosyalar yedekleme dizininden de kaldırılır.
  • 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 ;

1729792966644.png


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


changed_files_log.txt dosya çıktısı :

1729793261654.png





[CODE lang="python" title="backupwindows.py"]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} -> {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} -> {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ı.")
[/CODE]
 

En Çok Reaksiyon Alan Mesajlar

Bunun için oldukça gelişmiş bir yapı olan Git zaten yıllardır var, çok daha detaylı yedekleme, farklı sürümler olarak saklayabilme, birden fazla kişinin aynı anda aynı dosyalar üzerinde çalışabilmesi gibi bir çok özellik sunuyor, böyle bir nimetten faydalanmak yerine aynı işi çok daha ilkel şekilde yapan bir script kullanmak kendinize eziyet, Git sistemine geçin rahat edin derim, yine de paylaşım için teşekkürler.
git evet yıllardır kullanıyorum zaten fakat internetsiz ortamlarda bulunduğum çok oldu , sektör gereği bazı cihazları wifi ağına bağlayamıyoruz bazı konumlarda sadece metin2 olarak düşünmenizi istemem bir çok fason imalat sektöründe bu tarz script ve program kullanıyoruz bunu metin2 için neden olmasın diye paylaştığım bir olay sadece :)
Paylaşım için teşekkürler.
 
Bunun için oldukça gelişmiş bir yapı olan Git zaten yıllardır var, çok daha detaylı yedekleme, farklı sürümler olarak saklayabilme, birden fazla kişinin aynı anda aynı dosyalar üzerinde çalışabilmesi gibi bir çok özellik sunuyor, böyle bir nimetten faydalanmak yerine aynı işi çok daha ilkel şekilde yapan bir script kullanmak kendinize eziyet, Git sistemine geçin rahat edin derim, yine de paylaşım için teşekkürler.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst