Nextcloud มีส่วนประกอบที่จำเป็นสำหรับการล้างไฟล์ที่ถูกลบโดยอัตโนมัติอยู่แล้ว ดังนั้นผู้ดูแลระบบส่วนใหญ่จึงไม่จำเป็นต้องใช้สคริปต์เชลล์แบบกำหนดเอง ตามเอกสารการดูแลระบบ Nextcloud 35 ฉบับปัจจุบัน วิธีการที่แนะนำยังคงเป็นการรวมนโยบายการเก็บรักษาไฟล์ในถังขยะเข้ากับการทำงานของงานเบื้องหลังที่เชื่อถือได้ รายละเอียดที่สำคัญคือautoนโยบายเริ่มต้นนั้นไม่เหมือนกับ “ลบทุกอย่างหลังจาก 30 วัน” แต่จะเก็บไฟล์ที่ถูกลบไว้อย่างน้อย 30 วัน จากนั้นจึงนำไฟล์เหล่านั้นกลับมาล้างเมื่อต้องการพื้นที่ว่าง
หากเป้าหมายของคุณคือการล้างข้อมูลที่คาดการณ์ได้ ให้กำหนดอายุการเก็บรักษาข้อมูลสูงสุดอย่างชัดเจน และตรวจสอบให้แน่ใจว่างานพื้นหลังของ Nextcloud ทำงานผ่าน cron ของระบบ ขั้นตอนด้านล่างนี้ใช้เฉพาะพฤติกรรมที่ Nextcloud ได้บันทึกไว้ และยังอธิบายด้วยว่าเมื่อใดจึงเหมาะสมที่จะใช้คำสั่ง ` occ trashbin:expireand` และ ` or`trashbin:cleanup
ระบบทำความสะอาดถังขยะอัตโนมัติทำงานอย่างไรกันแน่
เมื่อเปิดใช้งานแอปไฟล์ที่ถูกลบ ( files_trashbin) ไฟล์ที่ผู้ใช้ลบจะถูกย้ายไปยังถังขยะแทนที่จะถูกลบทันที ซึ่งจะให้เวลาผู้ใช้ในการกู้คืน แต่รายการที่ถูกลบเหล่านั้นยังคงใช้พื้นที่จัดเก็บข้อมูลอยู่ Nextcloud ควบคุมอายุการใช้งานของไฟล์เหล่านั้นด้วยtrashbin_retention_obligationการตั้งค่าในconfig/config.php.
เอกสารการกำหนดค่าถังขยะของ Nextcloudในปัจจุบันได้กำหนดรูปแบบนโยบายเหล่านี้ไว้:
| การตั้งค่า | ความหมาย | พอดีเป๊ะ |
auto | เก็บสิ่งของไว้อย่างน้อย 30 วัน หลังจากนั้นให้นำสิ่งของที่เหมาะสมออกเมื่อต้องการพื้นที่ว่าง | ระบบขนาดเล็กที่ใช้งานได้ดีกับพฤติกรรมเริ่มต้นของโปรแกรม |
D, auto | เก็บสิ่งของไว้อย่างน้อย D วัน จากนั้นจึงค่อยจัดการทำความสะอาดตามพื้นที่ว่างที่มีอยู่ | คุณต้องการระยะเวลาการกู้คืนขั้นต่ำ แต่ไม่มีกำหนดเวลาลบที่ตายตัว |
auto, D | รับประกันการลบข้อมูลหลังจากผ่านไป D วัน แต่ยังคงอนุญาตให้ทำการล้างข้อมูลโดยใช้ทรัพยากรที่มีอยู่ก่อนหน้านั้นได้ | คุณต้องการกำหนดอายุการเก็บรักษาสูงสุด แต่สามารถยอมรับการลบข้อมูลก่อนกำหนดได้เมื่อเกิดปัญหาเรื่องพื้นที่จัดเก็บข้อมูลไม่เพียงพอ |
D1, D2 | เก็บรายการไว้อย่างน้อย 1 วัน และลบออกเมื่อเกิน 2 วัน | คุณจำเป็นต้องมีทั้งระยะเวลาการฟื้นตัวขั้นต่ำและอายุการเก็บรักษาสูงสุดที่แน่นอน |
disabled | ปิดใช้งานการหมดอายุอัตโนมัติของถังขยะ | เฉพาะในกรณีที่ตั้งใจเก็บรักษาข้อมูลไว้โดยไม่มีกำหนด และมีการจัดการการเติบโตของพื้นที่จัดเก็บข้อมูลด้วยวิธีอื่นเท่านั้น |
ยังมีกฎการจัดเก็บข้อมูลอีกข้อหนึ่งที่ควรจำไว้: หากพื้นที่จัดเก็บข้อมูลของผู้ใช้เกินโควต้าเนื่องจากการลบไฟล์ Nextcloud อาจไม่สนใจการตั้งค่าการเก็บรักษาและล้างถังขยะจนกว่าจะถึงโควต้าที่ต้องการ นั่นคือเหตุผลที่การเก็บรักษาข้อมูลไม่ควรถูกมองว่าเป็นหลักประกันการสำรองข้อมูลที่ไม่สามารถเปลี่ยนแปลงได้
ขั้นตอนที่ 1: เลือกนโยบายการเก็บรักษาข้อมูลก่อนที่จะเปลี่ยนแปลงสิ่งใดๆ
กำหนดว่าถังขยะมีไว้เพื่ออะไรในสภาพแวดล้อมของคุณ หากผู้ใช้มักกู้คืนไฟล์ที่ถูกลบโดยไม่ได้ตั้งใจ ให้กำหนดช่วงเวลาขั้นต่ำที่เหมาะสม หากสิ่งที่คุณให้ความสำคัญคือพื้นที่จัดเก็บข้อมูลที่จำกัดหรือนโยบายการเก็บรักษาข้อมูลที่เป็นลายลักษณ์อักษร ให้กำหนดช่วงเวลาสูงสุดด้วยเช่นกัน
ตัวอย่างเช่น การตั้งค่านี้อนุญาตให้ล้างข้อมูลตามพื้นที่ว่างได้ตลอดเวลา แต่รับประกันว่าไฟล์ที่มีอายุมากกว่า 30 วันจะถูกลบออก:
'trashbin_retention_obligation' => 'auto, 30',
หากคุณต้องการให้ไฟล์ที่ถูกลบยังคงถูกเก็บรักษาไว้อย่างน้อย 30 วัน และถูกลบออกหลังจาก 30 วัน ให้ใช้การกำหนดนโยบายแบบจำกัดแทน:
'trashbin_retention_obligation' => '30, 30',
เลือกค่าที่ตรงกับความต้องการในการกู้คืนของคุณ ระยะเวลาที่สั้นกว่าจะช่วยประหยัดพื้นที่จัดเก็บได้เร็วขึ้น แต่จะลดเวลาที่ผู้ใช้มีในการกู้คืนไฟล์ลง ระยะเวลาที่ยาวกว่าจะให้เวลาในการกู้คืนมากขึ้น แต่ก็อาจทำให้การใช้พื้นที่ดิสก์เพิ่มขึ้นได้
ขั้นตอนที่ 2: ตั้งค่า trashbin_retention_obligation ในไฟล์ config.php
เปิดไฟล์การกำหนดค่า Nextcloud ซึ่งโดยปกติจะอยู่ในconfig/config.phpไดเร็กทอรีการติดตั้ง เพิ่มหรือเปลี่ยนแปลงการตั้งค่าภายใน$CONFIGอาร์เรย์ ตัวอย่างทั่วไปคือ:
<?php
$CONFIG = array (
// Other Nextcloud settings...
'trashbin_retention_obligation' => 'auto, 30',
);
ห้ามแก้ไขค่าที่ไม่เกี่ยวข้อง และระมัดระวังอย่าเปิดเผยเนื้อหาconfig.phpในตั๋วหรือภาพหน้าจอ เนื่องจากอาจมีข้อมูลการกำหนดค่าเซิร์ฟเวอร์ที่ละเอียดอ่อนอยู่
นอกจากนี้ คุณยังสามารถตรวจสอบการตั้งค่าที่ใช้งานได้จริงผ่านเครื่องมือบรรทัดคำสั่งของ Nextcloud แทนการคัดลอกเนื้อหาไฟล์ลงในข้อความแก้ไขปัญหาได้อีกด้วย
ขั้นตอนที่ 3: ใช้ cron ของระบบเพื่อการทำงานเบื้องหลังที่เชื่อถือได้
นโยบายการเก็บรักษาข้อมูลจะมีประโยชน์ก็ต่อเมื่องานเบื้องหลังของ Nextcloud กำลังทำงานอยู่จริงเท่านั้นเอกสารเกี่ยวกับงานเบื้องหลัง ของ Nextcloud แนะนำให้ใช้ cron ของระบบปฏิบัติการสำหรับอินสแตนซ์ที่ใช้งานจริง โหมด AJAX เป็นโหมดเริ่มต้น แต่ขึ้นอยู่กับการเข้าชมหน้าเว็บและเป็นตัวเลือกที่เชื่อถือได้น้อยที่สุด
ในการติดตั้ง Linux ทั่วไปโดยใช้www-dataบัญชีเว็บเซิร์ฟเวอร์ ให้แก้ไข crontab ของบัญชีนั้น:
crontab -u www-data -e
จากนั้นให้เรียกใช้แอป Nextcloud cron.phpทุกๆ ห้านาที:
*/5 * * * * php -f /var/www/nextcloud/cron.php
แทนที่/var/www/nextcloudด้วยเส้นทางจริงไปยังการติดตั้งของคุณ ระบบบางระบบต้องการเส้นทาง PHP CLI แบบเต็ม เช่น/usr/bin/php.
คุณสามารถเลือกโหมด cron ได้อย่างชัดเจนด้วยวิธีการดังต่อไปนี้:
sudo -E -u www-data php /var/www/nextcloud/occ background:cron
Nextcloud ระบุว่างานเบื้องหลังที่กำหนดเวลาหมดอายุของถังขยะจะทำงานทุกๆ 30 นาที การเรียกใช้งานcron.phpทุกๆ 5 นาทีไม่ได้หมายความว่าถังขยะจะถูกล้างทุกๆ 5 นาที แต่หมายความว่าตัวกำหนดเวลาจะได้รับโอกาสในการเรียกใช้งานที่ถึงกำหนดบ่อยครั้ง
ขั้นตอนที่ 4: ตรวจสอบว่าโปรแกรมกำหนดตารางเวลาทำงานอยู่หรือไม่
หลังจากตั้งค่า cron เสร็จแล้ว ให้ตรวจสอบรายการในระบบปฏิบัติการก่อน:
crontab -u www-data -l
จากนั้นตรวจสอบการตั้งค่าการดูแลระบบของ Nextcloud เพื่อดูสถานะงานเบื้องหลัง หน้าเว็บควรรายงานว่างานได้ทำงานไปแล้วเมื่อเร็ว ๆ นี้ หากเวลาที่รายงานการทำงานครั้งล่าสุดเก่าลงเรื่อย ๆ ให้แก้ไข cron ก่อนที่จะวินิจฉัยนโยบายการเก็บรักษาข้อมูล
ใน Nextcloud 35 occคำสั่งที่ระบุไว้ในเอกสารยังรวมถึงคำสั่งตรวจสอบงานเบื้องหลัง เช่นbackground-job:list, background-job:running, และbackground-job:historyซึ่งสามารถช่วยได้เมื่อคุณต้องการตรวจสอบว่างานกำลังถูกประมวลผลอยู่จริง แทนที่จะสันนิษฐานว่า cron ทำงานอยู่
ขั้นตอนที่ 5: ใช้คำสั่ง trashbin:expire สำหรับการเรียกใช้งานด้วยตนเองตามนโยบาย
หากคุณได้กำหนดระยะเวลาการเก็บรักษาข้อมูลแบบกำหนดเอง คุณสามารถใช้แนวนโยบายนั้นด้วยตนเองได้โดยใช้คำสั่งต่อไปนี้:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:expire
เอกสารอ้างอิงคำสั่งไฟล์และถังขยะของ Nextcloudฉบับปัจจุบันระบุข้อจำกัดที่สำคัญอย่างหนึ่งคือtrashbin:expireจะทำการหมดอายุด้วยตนเองก็ต่อเมื่อมีการกำหนดค่าระยะเวลาการเก็บรักษาแบบกำหนดเองเท่านั้น หากใช้ตามautoนโยบายเริ่มต้น คำสั่งจะแสดงข้อความแจ้งข้อมูลและไม่ทำอะไรเพิ่มเติม เนื่องจากกระบวนการหมดอายุอัตโนมัติจะถูกจัดการโดยงานเบื้องหลังอยู่แล้ว
หากคุณต้องการตั้งค่า cron สำหรับระบบแยกต่างหากโดยเจตนาtrashbin:expireNextcloud มีเอกสารอธิบายวิธีการปิดใช้งานงานพื้นหลังการหมดอายุของถังขยะในตัวของแอปก่อน:
sudo -E -u www-data php /var/www/nextcloud/occ config:app:set --value=no files_trashbin background_job_expire_trash
จากนั้นคุณสามารถกำหนดตารางเวลาocc trashbin:expire --quietด้วยตนเองได้ นี่เป็นตัวเลือกขั้นสูง สำหรับการติดตั้งส่วนใหญ่ การปล่อยให้การหมดอายุในตัวเปิดใช้งานอยู่และเรียกใช้cron.phpตัวกำหนดเวลาปกติของ Nextcloud นั้นง่ายกว่าและดูแลรักษาง่ายกว่า
อย่าสับสนระหว่าง trashbin:expire กับ trashbin:cleanup
ชื่อคล้ายกัน แต่คำสั่งมีผลแตกต่างกันมาก คำสั่งแรกtrashbin:expireจะลบรายการที่ตรงตามนโยบายการเก็บรักษาที่กำหนดไว้ คำสั่งที่สองtrashbin:cleanupจะลบเนื้อหาในถังขยะอย่างถาวรสำหรับผู้ใช้ที่คุณระบุ
ตัวอย่างเช่น:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:cleanup --all-users
เป็นคำสั่งลบข้อมูลแบบถาวรและครอบคลุมผู้ใช้ทั้งหมด มีประโยชน์เมื่อคุณต้องการล้างถังขยะของผู้ใช้ทุกคนโดยตั้งใจ แต่โดยทั่วไปแล้วเป็นคำสั่งที่ไม่เหมาะสมสำหรับการทำงานอัตโนมัติตามระยะเวลาการเก็บรักษาข้อมูล เนื่องจากมันไม่สนใจช่วงเวลาการกู้คืนที่คุณกำหนดไว้ อย่าใส่คำสั่งล้างข้อมูลผู้ใช้ทั้งหมดลงใน cron เว้นแต่ว่าการลบข้อมูลแบบถาวรและไม่มีเงื่อนไขเป็นนโยบายของคุณจริงๆ
ขั้นตอนที่ 6: ตรวจสอบและควบคุมขนาดถังขยะบน Nextcloud 35
เอกสารคำสั่ง Nextcloud 35 ฉบับปัจจุบันมีคำสั่งtrashbin:sizeที่ช่วยให้ผู้ดูแลระบบสามารถตรวจสอบหรือตั้งค่าขนาดเป้าหมายของถังขยะได้ทั้งในระดับทั่วโลกหรือต่อผู้ใช้ หากต้องการดูค่าปัจจุบันในระดับทั่วโลก:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size
หากต้องการดูเป้าหมายที่มีประสิทธิภาพของผู้ใช้รายใดรายหนึ่ง:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size --user USER_ID
การกำหนดขนาดเป้าหมายที่ชัดเจนสามารถเสริมการเก็บรักษาข้อมูลตามอายุได้ เมื่อความจุในการจัดเก็บเป็นข้อกังวลหลัก Nextcloud ระบุว่า การเปลี่ยนขนาดเริ่มต้นทั่วโลกจะทำให้ระบบทำการล้างถังขยะที่มีอยู่ทันที ดังนั้นควรพิจารณาการเปลี่ยนแปลงขนาดเป็นการดำเนินการ ไม่ใช่เพียงแค่การตั้งค่าการแสดงผลที่ไม่เป็นอันตราย
วิธีตรวจสอบว่าการล้างข้อมูลอัตโนมัติทำงานหรือไม่
- สถานะการทำงานเบื้องหลังแสดงการทำงานล่าสุด
- ไฟล์ crontab ของระบบปฏิบัติการมี
cron.phpรายการ ที่คาดไว้แล้ว
- การตั้งค่าของคุณ
trashbin_retention_obligationตรงกับนโยบายที่คุณตั้งใจไว้
- ขยะเก่าจะถูกกำจัดไปเองตามระยะเวลาสูงสุดที่กำหนดไว้ หากมีการตั้งค่าอายุสูงสุดไว้
trashbin:expireทำงานตามที่ระบุไว้เมื่อมีการกำหนดค่านโยบายแบบกำหนดเอง
- การใช้งานพื้นที่ดิสก์หรือโควต้าจะหยุดเพิ่มขึ้นอย่างไม่คาดคิด เนื่องจากไฟล์ที่ถูกลบไปแล้วและไม่ได้ใช้งานจะไม่ถูกเก็บรักษาไว้ตลอดไปอีกต่อไป
หากไฟล์เก่าคงอยู่นานกว่าที่คาดไว้ ขั้นแรกให้ตรวจสอบว่านโยบายของคุณมีค่าสูงสุดที่กำหนดไว้หรือautoไม่ การตั้งค่าเริ่มต้นไม่ได้รับประกันว่าจะลบไฟล์ในวันที่ 30 อย่างแน่นอน จากนั้น ตรวจสอบงานที่ทำงานอยู่เบื้องหลัง หลังจากตรวจสอบสิ่งเหล่านี้เสร็จแล้ว จึงค่อยตรวจสอบสิทธิ์การเข้าถึง ระบบจัดเก็บข้อมูล หรือบันทึกการใช้งานของแอปพลิเคชัน
การกำหนดค่าที่ใช้งานได้จริงสำหรับเซิร์ฟเวอร์แบบโฮสต์เองส่วนใหญ่
สำหรับอินสแตนซ์แบบโฮสต์เองทั่วไป จุดเริ่มต้นที่เหมาะสมคือการใช้ cron ของระบบทุกๆ ห้านาที และกำหนดอายุสูงสุดของการลบข้อมูลอย่างชัดเจน ตัวอย่างเช่น'auto, 30'การกำหนดอายุสูงสุดประมาณหนึ่งเดือนในสภาวะปกติ จะช่วยให้มั่นใจได้ว่าข้อมูลจะไม่คงอยู่ตลอดไป หากผู้ใช้จำเป็นต้องมีช่วงเวลาการกู้คืนที่สมบูรณ์เสมอโดยไม่คำนึงถึงแรงกดดันด้านพื้นที่จัดเก็บ ให้ใช้นโยบายกำหนดขอบเขตขั้นต่ำและสูงสุด'30, 30'แทน
ควรแยกไฟล์สำรองข้อมูลออกจากถังขยะ ถังขยะเป็นฟีเจอร์การกู้คืนข้อมูลของผู้ใช้ที่มีโควต้าและระยะเวลาการเก็บรักษา ไม่ใช่สิ่งที่จะมาทดแทนกลยุทธ์การสำรองข้อมูลที่เป็นอิสระ
ข้อมูลอ้างอิงอย่างเป็นทางการของ Nextcloud