Thaiadmin

zip file โดยไม่ให้ซ้ำ

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

zip file โดยไม่ให้ซ้ำ
« เมื่อ: 6 มีนาคม 2014, 17:04:37 »
สวัสดีครับ
ผมมีเรื่องอยากจะสอบถามและขอความรู้ ดังนี้ครับ

1.ผมใช้ sql 2008r2 ทำการ backup DB ทุกวัน มาเก็บใน folder  E:/backups
2.ผมใช้ sql clean ไฟล์ ที่ backup (ไฟล์เก่า) ที่เกิน 7 วัน
3. ผมใช้ สคริป batch files zip ไฟล์ ไปไว้ folder dropbox

ปัญหาผมคือ
1.ทำอย่างไร ให้ zip ไฟล์ ตามวันที่ backup เช่น db_2014_03_06_123123.bak
เพราะปัจจุบัน ใน folder ห้ามมีไฟล์ เกิน 1 ไฟล์ จึงจะสามารถ zip ไฟล์นั้นได้ ถ้ามี 2 ไฟล์ ก็จะซิบรวมไฟล์เดิม

ขอบคุณครับ

@Echo Off

for /d %%X in (D:\backups) do "c:\Program Files\7-Zip\7z.exe" a "D:\00_Zip\%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%-%time:~0,2%%time:~3,2%%time:~6,2%.7z" "%%X\"

echo Backup Complete!
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

ออฟไลน์ ~ RoNiN ~

  • *****
  • 553
  • 7
  • เพศ: ชาย
  • ทำดีแต่อย่าเด่นจะเป็นภัย
Re: zip file โดยไม่ให้ซ้ำ
« ตอบกลับ #1 เมื่อ: 7 มีนาคม 2014, 02:47:47 »
ถ้ามีไฟล์ตามตัวอย่างแบบนี้\
db_2014_03_01_125959.bak
db_2014_03_02_125959.bak
db_2014_03_03_125959.bak
db_2014_03_04_125959.bak
db_2014_03_05_125959.bak
db_2014_03_06_125959.bak
db_2014_03_07_125959.bak

ใช้ dir /b /o:n ร่วมกับ for /f เพื่อให้ได้ชื่อไฟล์สุดท้ายมา ซึ่งเป็นวันที่ล่าสุด
ใช้ If not exist เพื่อตรวจสอบว่ามีไฟล์นั้นๆอยู่หรือไม่ แล้วค่อยสั่ง zip ไฟล์ ซึ่งกรณีนี้ผมสั่ง zip ใน folder E:\backups\
ใช้ if exist ที่ Folder ปลายทางก่อนทำการ move หรือสั่ง copy ไฟล์ที่ zip แล้วไปวางอีกที
โค๊ด: [Select]
@ECOH OFF

::Get filename and check before archive
for /f "delims=. tokens=1" %%A in ('dir /b /o:n E:\backups\db_????_??_??_??????.bak') do (set fileNameZip=%%A)

::Check source file
if exist E:\backups\%fileNameZip%.bak goto :CHECKTHENZIP_
if not exist E:\backups\%fileNameZip%.bak echo file not found !!!
PAUSE
EXIT

:CHECKTHENZIP_
if exist E:\backups\%fileNameZip%.7z goto :FILEZIPEXIST_
if not exist E:\backups\%fileNameZip%.7z "c:\Program Files\7-Zip\7z.exe" a E:\backups\%fileNameZip%.7z E:\backups\%fileNameZip%.bak
goto :MOVEFILE_

:FILEZIPEXIST_
echo archive file already !!!
if not exist D:\00_Zip\%fileNameZip%.7z goto :MOVEFILE_
if exist D:\00_Zip\%fileNameZip%.7z echo Destination archive already
PAUSE
EXIT

:MOVEFILE_
move /y E:\backups\%fileNameZip%.7z D:\00_Zip\
echo All process complete
PAUSE
EXIT
Hello Thailand

Re: zip file โดยไม่ให้ซ้ำ
« ตอบกลับ #2 เมื่อ: 7 มีนาคม 2014, 08:56:48 »
ขอบคุณครับ เดี๋ยวผมขอลองไปใช้ดูครับ

ผมตรวจสอบแล้ว ไฟล์ที่ backup มันได้ชื่อตามนี้ครับ

db_2014_03_12_000001_53214.bak
db_2014_03_13_000001_13452.bak
db_2014_03_14_000001_99081.bak
db_2014_03_15_000001_45129.bak

จะตรงก็วันที่ เลยไม่รู้ว่าจะใช้ได้ไหมขอลองดูก่อนครับ  O0
และจะมารายงานให้ทราบครับ

ขอบคุณมากครับ

เจ
เมื่อ: 07 มีนาคม 2014, 08:29:48
ทดสอบแล้วครับ เยี่ยมมากเลยครับ

ไม่ zip ไฟล์เดิม    zip เสร็จ ย้ายไป folder ที่เราต้องการ

ขอบคุณมากๆเลยครับ

 O0


เจ
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย