สำหรับการติดตั้ง Linux แบบทั่วไป ให้เชื่อมต่อไดรฟ์ภายนอกอย่างถาวร คัดลอกไดเร็กทอรีข้อมูลทั้งหมดในขณะที่ Nextcloud ออฟไลน์ จากนั้นสร้างลิงก์สัญลักษณ์ (symlink) จากเส้นทางเดิมไปยังตำแหน่งใหม่ อย่าเปลี่ยนเส้นทางโดยตรงdatadirectory: config.phpNextcloud ติดตามพื้นที่จัดเก็บข้อมูลภายในเครื่องโดยใช้เส้นทางสัมบูรณ์ ดังนั้นการเปลี่ยนเส้นทางโดยตรงอาจทำให้ไฟล์และแชร์ไฟล์สูญหายได้
ตัวอย่างนี้สมมติว่าเป็นการติดตั้งแบบแพ็กเกจหรือไฟล์เก็บถาวร การติดตั้งแบบ Docker, Snap และ Appliance จะแมปพาธแตกต่างกัน ดังนั้นควรปรับการเชื่อมต่อให้เข้ากับการใช้งานนั้นๆ แทนที่จะคัดลอกพาธของโฮสต์เหล่านี้โดยไม่ตรวจสอบให้ดี
อะไรที่ได้รับการยืนยันแล้ว และอะไรที่ขึ้นอยู่กับเซิร์ฟเวอร์ของคุณ
| จุด | จะทำอย่างไร |
| ตรวจสอบแล้ว: Nextcloud ใช้พาธแบบสัมบูรณ์ในการระบุพื้นที่จัดเก็บข้อมูลภายในเครื่อง การย้ายไฟล์อย่างไม่ระมัดระวังอาจทำให้ไฟล์หรือโฟลเดอร์ที่แชร์สูญหายได้ | รักษาเส้นทางที่กำหนดค่าไว้ให้คงที่ด้วย symlink; รักษาเนื้อหาทั้งหมดไว้ รวมถึงไฟล์.ncdata. |
| ขึ้นอยู่กับการตั้งค่า: เส้นทางข้อมูล ผู้ใช้ HTTP ระบบไฟล์ และชื่อบริการอาจแตกต่างกันไป | ตรวจสอบการตั้งค่าปัจจุบันของคุณและยืนยันว่าดิสก์ยังคงรักษาสิทธิ์การเป็นเจ้าของและสิทธิ์การเข้าถึงที่จำเป็นของ Linux ไว้ |
| ขึ้นอยู่กับดิสก์: ไม่สามารถรับประกันได้ว่าการติดตั้งบูตและการจ่ายไฟจะเสถียร | ติดตั้งดิสก์โดยใช้ UUID ทดสอบการติดตั้งหลังจากรีบูต และป้องกันไม่ให้ Nextcloud เริ่มทำงานเมื่อไม่มีดิสก์ข้อมูล |
ฟังก์ชันการเชื่อมต่อพื้นที่จัดเก็บข้อมูลภายนอกของแอป Files จะเพิ่มตำแหน่งจัดเก็บข้อมูลสำรอง ไม่ได้ย้ายไดเร็กทอรีข้อมูลหลัก ใช้สำหรับสร้างโฟลเดอร์หรือแชร์เพิ่มเติม และย้ายไดเร็กทอรีข้อมูลเมื่อไฟล์และข้อมูลเมตาของเซิร์ฟเวอร์จำเป็นต้องจัดเก็บอยู่ในไดรฟ์นั้น
1. สำรองข้อมูล Nextcloud และระบุเส้นทางต้นทาง
สำรองข้อมูลฐานconfig/ข้อมูล โฟลเดอร์ข้อมูล แอปพลิเคชันที่กำหนดเอง และธีม ตรวจสอบให้แน่ใจว่าการสำรองฐานข้อมูลสามารถกู้คืนได้ การคัดลอกไฟล์เพียงอย่างเดียวไม่ใช่การย้อนกลับอย่างสมบูรณ์
ค้นหาเส้นทางข้อมูลในconfig/config.phpหรือด้วย จากocc config:system:get datadirectoryนั้นระบุผู้ใช้ HTTP ตัวอย่างใช้www-dataและ/var/www/nextcloud/data; แทนที่ด้วยค่าจริงของคุณ อย่าฟอร์แมตไดรฟ์ที่มีไฟล์ที่คุณต้องการ
ภาพประกอบ: มุมมองยูทิลิตี้ดิสก์แสดงรายละเอียดของไดรฟ์ภายนอกและระบบไฟล์ เพื่อตรวจสอบก่อนทำการเมานต์เพื่อใช้งานกับ Nextcloud
2. ติดตั้งไดรฟ์ในตำแหน่งที่มั่นคง
เรียกใช้คำสั่งlsblk -fและจดบันทึก UUID ของระบบไฟล์ของพาร์ติชัน ชื่อไฟล์/dev/sdb1อาจเปลี่ยนแปลงได้ ดังนั้นให้ใช้ UUID ในการกำหนดค่าการเมานต์
สำหรับเซิร์ฟเวอร์ Linux ที่ใช้ ext4 ให้สร้างจุดเชื่อมต่อ (mount point) และเพิ่มบรรทัดลักษณะนี้ลงในไฟล์/etc/fstabโดยแทนที่ UUID ตัวอย่างด้วย UUID จริง:
UUID=YOUR-DRIVE-UUID /srv/nextcloud-disk ext4 defaults 0 2
ใช้ชนิดข้อมูลที่มีอยู่แล้วในพาร์ติชั่น บรรทัดนี้ไม่ได้ทำการฟอร์แมตพาร์ติชั่น ตรวจสอบให้แน่ใจว่าระบบไฟล์ยังคงรักษาสิทธิ์การเป็นเจ้าของและสิทธิ์การเข้าถึงที่ Nextcloud ต้องการไว้
ติดตั้งและตรวจสอบให้แน่ใจก่อนที่จะบันทึกข้อมูลใดๆ ลงไป:
sudo mkdir -p /srv/nextcloud-disk
sudo mount /srv/nextcloud-disk
findmnt /srv/nextcloud-disk
ตรวจสอบให้แน่ใจว่าผลลัพธ์ระบุพาร์ติชันภายนอก หากใช้ ให้nofailปิดกั้นบริการเว็บ/PHP บนจุดเชื่อมต่อด้วย มิเช่นนั้นดิสก์ที่หายไปอาจทำให้ไดเร็กทอรีจุดเชื่อมต่อว่างเปล่าซึ่งรับการเขียนข้อมูล สามารถใช้ systemd drop-in ได้RequiresMountsFor=/srv/nextcloud-diskเสียบไดรฟ์ไว้ตลอดเวลาขณะที่ Nextcloud ทำงาน
ภาพประกอบ: รายการ UUID ในตารางระบบไฟล์แสดงถึงการกำหนดค่าการเมานต์แบบถาวร ไม่ใช่ทางลัดชื่ออุปกรณ์
3. ตั้งค่า Nextcloud ให้อยู่ในโหมดบำรุงรักษาและคัดลอกข้อมูล
โหมดบำรุงรักษาจะบล็อกการเข้าสู่ระบบ แต่จะไม่หยุดงานที่กำหนดไว้ทั้งหมด หยุดการทำงานของ cron หรือตัวจับเวลา systemd ของ Nextcloud หยุดไคลเอนต์การซิงค์ และหยุดบริการเว็บ/PHP ก่อนทำการคัดลอก เพื่อป้องกันไม่ให้คำขอใดๆ เปลี่ยนแปลงไฟล์ในระหว่างการย้าย
sudo -E -u www-data php /var/www/nextcloud/occ maintenance:mode --on
เมื่อปิดใช้งานตัวกำหนดเวลาและหยุดบริการเว็บ/PHP แล้ว ให้คัดลอกไดเร็กทอรีข้อมูลในฐานะผู้ใช้ root เพื่อรักษาสิทธิ์การเป็นเจ้าของ สิทธิ์การเข้าถึง ACL และไฟล์ที่ซ่อนอยู่:
sudo mkdir -p /srv/nextcloud-disk/data
sudo rsync -Aavx --numeric-ids /var/www/nextcloud/data/ /srv/nextcloud-disk/data/
เครื่องหมายทับท้ายสุดใช้สำหรับคัดลอกเนื้อหาในไดเร็กทอรี เก็บสำเนาเก่าไว้ ตรวจสอบrsyncข้อผิดพลาด และยืนยันว่า.ncdataมีอยู่ในระดับบนสุดของไดเร็กทอรีใหม่แล้ว
ภาพประกอบ: มุมมองการคัดลอกในเทอร์มินัลแสดงถึงการถ่ายโอนไดเร็กทอรีข้อมูลทั้งหมดในขณะที่ Nextcloud หยุดทำงานอยู่
4. รักษาเส้นทางเดิมไว้ด้วยการสร้างลิงก์สัญลักษณ์ (symlink)
คู่มือการแก้ไขปัญหาของ Nextcloud แนะนำให้เชื่อมโยงเส้นทางเดิมกับไดเร็กทอรีใหม่ หลังจากตรวจสอบสำเนาแล้ว ให้เปลี่ยนชื่อไดเร็กทอรีเก่าสำหรับการย้อนกลับ และสร้างลิงก์:
sudo mv /var/www/nextcloud/data /var/www/nextcloud/data.pre-move
sudo ln -s /srv/nextcloud-disk/data /var/www/nextcloud/data
readlink -f /var/www/nextcloud/data
ตรวจสอบให้แน่ใจว่าเส้นทางนั้นถูกต้อง/srv/nextcloud-disk/dataผู้ใช้เว็บต้องเข้าไปในไดเร็กทอรีแม่และอ่าน.ncdataและเขียนไปยังปลายทางที่กำหนด:
sudo -u www-data test -r /var/www/nextcloud/data/.ncdata
sudo -u www-data test -w /var/www/nextcloud/data
หากการตรวจสอบล้มเหลว ให้แก้ไขความเป็นเจ้าของหรือสิทธิ์การเข้าถึงของผู้ปกครองสำหรับผู้ใช้เว็บของคุณ อย่าทำให้ไดเร็กทอรีนั้นสามารถเขียนได้โดยทุกคน เว็บเซิร์ฟเวอร์บางแห่งต้องอนุญาตให้ใช้ลิงก์สัญลักษณ์ หากไม่สามารถทำได้ อย่าแก้ไขoc_storagesด้วยตนเอง: Nextcloud ถือว่าวิธีการนั้นไม่ได้รับการสนับสนุนและเตือนว่าอาจทำให้ฐานข้อมูลเสียหายได้
ภาพประกอบ: มุมมองเทอร์มินัลแสดงให้เห็นว่าเส้นทางข้อมูลเดิมถูกเชื่อมโยงไปยังไดเร็กทอรีไดรฟ์ภายนอก
5. รีสตาร์ทและตรวจสอบก่อนลบสำเนาการย้อนกลับ
เริ่มเว็บ/PHP แล้วเปิดใช้งานตัวกำหนดเวลาอีกครั้ง ตรวจสอบการเชื่อมต่อและการสร้างลิงก์สัญลักษณ์ จากนั้นปิดโหมดบำรุงรักษา:
findmnt /srv/nextcloud-disk
sudo -E -u www-data php /var/www/nextcloud/occ status
sudo -E -u www-data php /var/www/nextcloud/occ maintenance:mode --off
ลงชื่อเข้าใช้ เปิดไฟล์และโฟลเดอร์ที่แชร์อยู่แล้ว และอัปโหลด/ดาวน์โหลดไฟล์ขนาดเล็ก ตรวจสอบบันทึกของ Nextcloud และเว็บเซิร์ฟเวอร์ จากนั้นรีบูตเครื่องในช่วงเวลาการบำรุงรักษาเพื่อยืนยันการเชื่อมต่อดิสก์ก่อนที่ Nextcloud จะเริ่มทำงาน
เก็บdata.pre-moveข้อมูลสำรองฐานข้อมูลไว้จนกว่าการรีบูตและการซิงค์ปกติจะสำเร็จ หากการย้ายล้มเหลว ให้เปิดใช้งานโหมดบำรุงรักษา หยุดแอป และกู้คืนไดเร็กทอรีและสถานะบริการเดิม การแก้ไขแบบกว้างๆfiles:scanไม่สามารถแก้ไขการเมานต์ที่ผิดพลาดได้
การตรวจสอบ
ตรวจสอบการเชื่อมต่อดิสก์เมื่อบูตเครื่อง ตรวจสอบว่าเส้นทางเดิมถูกต้อง ผู้ใช้เว็บสามารถอ่านและเขียนได้ และไฟล์ที่มีอยู่รวมถึงการอัปโหลดขนาดเล็กทำงานได้ หาก Nextcloud แจ้งว่าไฟล์หายไปหลังจากรีบูต ให้หยุดแอปและตรวจสอบการเชื่อมต่อก่อนอนุญาตให้เขียนข้อมูล
เอกสารอ้างอิง: คำแนะนำของ Nextcloud สำหรับการย้ายไดเร็กทอรีข้อมูล ; คำแนะนำเกี่ยวกับโหมดการสำรองข้อมูลและการบำรุงรักษาของ Nextcloud ; ตำแหน่งและการเป็นเจ้าของไดเร็กทอรีข้อมูลของ Nextcloud ; พื้นที่จัดเก็บข้อมูลภายนอกของ Nextcloud เป็นการเมานต์รอง ; เอกสารประกอบการเมานต์ของ Linux สำหรับตัวระบุ UUID ; การพึ่งพาการเมานต์ของ systemd