Sinopsis
Backup adalah langkah bijak untuk kondisi saat ini yang berbasis digital, tidak melakukan backup maka hilanglah sudah data mu, walaupun ada banyak aplikasi recovery seperti EASEUS yang bagus dan free (maksimal 5 kali sih) https://www.easeus.com/download/backup.html. Tapi biasakan saja untuk melakukan backup secara daily menggunakan hardisk yang berbeda-beda untuk jaga-jaga kalau flashdik mu ilang ditengah jalan. Saat ini ada banyak aplikasi yang sudah tersedia baik yang bersifat
- local/desktop seperti http://www.backupsoft.net/everydayautobackup.htm yang bisa penulis pakai saat ini
- ataupun cloud seperti dropbox.com, google drive
- menggunakan NAS storage. NAS adalah singkatan dari Network Attached Storage yaitu sebuah piranti penyimpanan data dengan sistem operasi yang dikhususkan untuk melayani kebutuhan backup dan share data. NAS dapat di akses langsung melalui jaringan dengan protokol seperti TCP/IP . NAS ini dilengkapi dengan tempat penyimpanan berupa harddisk, memiliki perangkat lunak sendiri untuk pengelolaan dan bertugas untuk menyimpan/backup serta men-share file dalam sebuah jaringan.
Khusus untuk point 3 bila kalian punya budget lebih akan menjadi opsi yang sangat baik karena bisa diakses seperti layaknya google drive namun itu milik kalian sendiri lho tentu bisa berisikan 1 TB lebih atau bahkan 25 TB bila kalian mau.
Ada opsi ke 4 yaitu kita bisa membuat script tersendiri menggunakan bahasa favorit yaitu python yang bertugas untuk Backup Files and Folders. Script ini dibuat ketika penulis sedang mencari-cari aplikasi untuk melakukan backup otomatis di Windows, tapi agak kesulitan menemukan aplikasi yang langsung berjalan otomatis, oleh karena itu penulis menggunakan Python untuk mempermudah kerjaan tersebut. Cara kerja script untuk Backup Files and Folders di Python tersebut sangat sederhana sekali, algoritma nya sangat sederhana seperti berikut
- Folder_tujuan dan folder_asal masing-masing dibandingkan keberadaan subfolder bila tidak ada maka create
- Kemudian setelah create folder maka cek masing-masing file, jika tidak ada langsung copy
- Jika masing-masing file ada, maka bandingkan informasi meta yaitu date modified nya
- jika file di folder_tujuan mempunyai date yang lebih lama, maka akan replace
Berikut hasil scriptnya diberikan informasi kepada user mengenai file dan folder nya
Proses Backup................................... D:/backup/1.38 Bejo-harmony search//1.1 Review.docx --> ditambahkan D:/backup/1.38 Bejo-harmony search//Algoritma Harmony Search.pdf --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search.html --> ditambahkan D:/backup/1.38 Bejo-harmony search//HarmonySearch.m --> ditambahkan D:/backup/1.38 Bejo-harmony search//HarmonySearch.zip --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmonysearchalgorithm-141106145524-conversion-gate01.pdf --> ditambahkan D:/backup/1.38 Bejo-harmony search//Industri Pengolahan.xlsx --> ditambahkan D:/backup/1.38 Bejo-harmony search//rahimikia2017.pdf --> ditambahkan Buat folder D:/backup/1.38 Bejo-harmony search/harmony search_files/ D:/backup/1.38 Bejo-harmony search//harmony search_files/186030155234771.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/a --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/ahy.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/anchor.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/application.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/application.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/application_002.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/application_002.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/application_003.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/aquant.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/bootstrap.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/bootstrap.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/conversion.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/dest5.html --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/fbevents.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/fileexchange.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/global.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/ico-facebook.svg --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/ico-google-plus.svg --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/ico-linkedin.svg --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/ico-rss.svg --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/ico-twitter.svg --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/index.html --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/jquery-latest.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/jquery.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/jquery_002.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/lightbox-min.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/mbox-contents-95c6a4d9c82a8d20476522984666120b54192e9b.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/mlc.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/mw_font.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/no_screenshot.png --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/pic-header-mathworks-logo.png --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/pic-header-mathworks-logo.svg --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/pic-header-mathworks-logo2.svg --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/profilepic_default.gif --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/s-code-contents-73da148cb454c4f6e395aa8df704854c99540662.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/satellite-5480c4083639370018670600.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/satelliteLib-e8d23c2e444abadc572df06537e2def59c01db09.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/show.js --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/site6.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/site6_lg.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/site6_md.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/site6_print.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/site6_sm.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/site6_smxs.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/site6_xs.css --> ditambahkan D:/backup/1.38 Bejo-harmony search//harmony search_files/xvy5baa.js --> ditambahkan Buat folder D:/backup/1.38 Bejo-harmony search/New folder/ =============================================================================== F:/1.38 Bejo-harmony search Informasi : Tambah : 55 File Update : 0 File Tetap : 0 File Jumlah Folder : 2
Contoh kode yang digunakan yaitu
import os import shutil def parsing(a,b): a2 = a.split('/') b2 = b.split('/') c = b2[len(a2):len(b2)-1] h = '' for i in range(0,len(c)): h = h+'/'+c[i] return h def cektanggal(f): if os.path.isfile(f)==False: return 0 else : return os.path.getmtime(f) #diubah ke float def backup(folder_tujuan,folder_asal): tambah = 0 tetap = 0 update = 0 jumlah_folder = 0 folder = folder_asal daftar_folder = folder_asal.split('/') #ambil folder terakhir if os.path.exists(folder_tujuan+'/'+daftar_folder[len(daftar_folder)-1])==False: os.makedirs(folder_tujuan+'/'+daftar_folder[len(daftar_folder)-1]) folder_tujuan = folder_tujuan+'/'+daftar_folder[len(daftar_folder)-1] jumlah_folder = 0 for foldername, subfolders, filenames in os.walk(folder): foldername = foldername.replace('\\','/') daftar_folder_bawah = foldername.split('/') if len(daftar_folder_bawah)>len(daftar_folder): create_folder = daftar_folder_bawah[len(daftar_folder):len(daftar_folder_bawah)] b = '' for a in create_folder: b = b+a+'/' if os.path.exists(folder_tujuan+'/'+b)==False: print ('Buat folder '+folder_tujuan+'/'+b) os.makedirs(folder_tujuan+'/'+b) pass jumlah_folder = jumlah_folder+1 pass for filename in filenames: croping = parsing(folder,foldername+'/'+filename) head, tail = os.path.split(filename) if os.path.isfile(folder_tujuan+'/'+croping+'/'+tail)==False: print (folder_tujuan+'/'+croping+'/'+tail+' --> ditambahkan') try : shutil.copy2(foldername+'/'+filename,folder_tujuan+'/'+croping+'/'+tail)#target_folder) tambah = tambah+1 except: pass else : if cektanggal(foldername+'/'+filename)>cektanggal(folder_tujuan+'/'+croping+'/'+tail): try: shutil.copy2(foldername+'/'+filename,folder_tujuan+'/'+croping+'/'+tail)#target_folder) print (folder_tujuan+'/'+croping+'/'+tail+' --> update') update = update+1 pass except: input('tekan enter untuk keluar....') pass else: print (foldername+'/'+filename+' --> tetap') tetap = tetap+1 pass print ('===============================================================================') print (folder_asal) print ('Informasi :') print ('Tambah : '+str(tambah)+ ' File') print ('Update : '+str(update)+ ' File') print ('Tetap : '+str(tetap)+ ' File') print ('Jumlah Folder : '+str(jumlah_folder)) print ('Proses Backup...................................') folder_tujuan = 'D:/backup' folder_asal = 'F:/1.38 Bejo-harmony search' backup(folder_tujuan,folder_asal)
Backup Files and Folders di Python sangat mudah digunakan koq tinggal kalian bikin saja dalam aplikasi berbasis GUI di python menggunakan PySimpleGUI. ataupun berbasis CLI arg parser di python