ย้ายข้อมูล Nextcloud ไปยังไดรฟ์ภายนอกโดยไม่ทำให้พื้นที่จัดเก็บข้อมูลเสียหาย

สำหรับการติดตั้ง 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; แทนที่ด้วยค่าจริงของคุณ อย่าฟอร์แมตไดรฟ์ที่มีไฟล์ที่คุณต้องการ

โปรแกรมยูทิลิตี้ดิสก์ของ Linux แสดงไดรฟ์ภายนอกที่เลือก ระบบไฟล์ ext4 และช่องข้อมูลจุดเชื่อมต่อ
ภาพประกอบ: มุมมองยูทิลิตี้ดิสก์แสดงรายละเอียดของไดรฟ์ภายนอกและระบบไฟล์ เพื่อตรวจสอบก่อนทำการเมานต์เพื่อใช้งานกับ 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 สำหรับไดรฟ์ภายนอกที่เชื่อมต่ออยู่
ภาพประกอบ: รายการ 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

ฝากความเห็น

ย้ายข้อมูล Nextcloud ไปยังไดรฟ์ภายนอกโดยไม่ทำให้พื้นที่จัดเก็บข้อมูลเสียหาย

ย้ายข้อมูล Nextcloud ไปยังไดรฟ์ภายนอกโดยไม่ทำให้พื้นที่จัดเก็บข้อมูลเสียหาย

ย้ายไดเร็กทอรีข้อมูล Nextcloud บน Linux ไปยังไดรฟ์ภายนอกอย่างปลอดภัย โดยใช้การเมานต์ UUID แบบถาวร โหมดบำรุงรักษา สำเนาที่ตรวจสอบแล้ว และซิมลิงก์เส้นทางเดิม

ข้อผิดพลาดฐานข้อมูล Nextcloud หลังจากการอัปเดต: ควรตรวจสอบอะไรก่อน

กู้คืนการเข้าถึง Nextcloud หลังจากการอัปเดตโดยการวินิจฉัยข้อผิดพลาด SQL ตรวจสอบการเชื่อมต่อฐานข้อมูล และดำเนินการย้ายข้อมูลที่หยุดชะงักให้เสร็จสมบูรณ์อย่างปลอดภัย

รีเซ็ตรหัสผ่านผู้ดูแลระบบ Nextcloud ที่ลืมไปโดยใช้ OCC

ใช้คำสั่ง OCC ของ Nextcloud เพื่อรีเซ็ตรหัสผ่านผู้ดูแลระบบจากเชลล์เซิร์ฟเวอร์ พร้อมคำแนะนำสำหรับชื่อผู้ใช้ สิทธิ์ และผู้ให้บริการเข้าสู่ระบบภายนอก

เพิ่มส่วนหัว HSTS ที่ปลายทาง HTTPS ที่ให้บริการ Nextcloud

ล้างคำเตือน HSTS ของ Nextcloud โดยการตั้งค่าส่วนหัวที่ Apache, NGINX หรือพร็อกซี TLS ของคุณ จากนั้นตรวจสอบการตอบสนอง HTTPS สาธารณะอย่างปลอดภัย

แก้ไขปัญหาการติดตั้งแอป Nextcloud ที่แจ้งว่าไม่มีการเชื่อมต่ออินเทอร์เน็ต

แก้ไขปัญหาการติดตั้งแอป Nextcloud ที่แจ้งว่าไม่มีการเชื่อมต่ออินเทอร์เน็ต

ตรวจสอบหาสาเหตุของการติดตั้งแอปจาก App Store ที่ล้มเหลว ไม่ว่าจะเป็นปัญหาจาก DNS, HTTPS, พร็อกซี, TLS หรือปัญหาการตั้งค่าจากเซิร์ฟเวอร์ Nextcloud เอง

แก้ปัญหา CPU กระชากเร็วใน Nextcloud Preview ด้วยคิวที่กำหนดเวลาไว้

ย้ายการสร้างภาพขนาดย่อไปไว้ในกำหนดการพื้นหลังที่ควบคุมได้ ตัดขนาดภาพตัวอย่างที่ไม่ได้ใช้ และตรวจสอบคิวโดยไม่ทำให้เซิร์ฟเวอร์ Nextcloud ของคุณทำงานหนักเกินไป

รับการซิงค์ข้อมูลบนเดสก์ท็อป Nextcloud โดยไม่ต้องแสดงสถานะ “กำลังประมวลผลไฟล์” อีกต่อไป

ค้นหาไฟล์ กฎการยกเว้น ปัญหาการเชื่อมต่อ หรือสถานะฐานข้อมูลไคลเอ็นต์ที่ทำให้การซิงค์ Nextcloud หยุดชะงัก จากนั้นตรวจสอบการอัปโหลดและดาวน์โหลดอย่างปลอดภัย

ล้างคำเตือน Nextcloud OPcache โดยการปรับขีดจำกัดให้ถูกต้อง

ค้นหาข้อจำกัดของ PHP OPcache ที่ทำให้เกิดคำเตือนของ Nextcloud อัปเดตการตั้งค่า PHP สำหรับเว็บให้ถูกต้อง รีสตาร์ทอย่างปลอดภัย และตรวจสอบผลลัพธ์

เชื่อมต่อ Nextcloud กับ CODE Docker: การตั้งค่าและข้อดีข้อเสีย

เชื่อมต่อ Nextcloud กับ CODE Docker: การตั้งค่าและข้อดีข้อเสีย

เปรียบเทียบ CODE ที่ติดตั้งมากับระบบและ CODE ที่ใช้ Docker จากนั้นเชื่อมต่อ Collabora Online กับ Nextcloud ผ่านพร็อกซีแบบย้อนกลับ HTTPS ที่ปลอดภัย

สร้างคลัสเตอร์ Nextcloud ที่ทนทานด้วย Galera

วางแผนการใช้งาน Nextcloud HA ที่เชื่อถือได้ โดยใช้พื้นที่จัดเก็บข้อมูลร่วมกัน การล็อก Redis การกำหนดเส้นทาง MariaDB ที่คำนึงถึงจำนวนเสียงข้างมาก และการตรวจสอบการทำงานล้มเหลวที่ใช้งานได้จริง