對小編來說, 存儲服務器通過一番折騰,已經搞到不得不上Next Cloud的地步。本來服務器裡面已經有了一堆文档, 如果無腦把文档拷貝出來, 再網頁裡傳進去, 顯然out了。
怎麽用shell命令用最快時間把文档傳進去呢?
首先要確定next cloud用戶放置的路徑, 本篇就拿/mnt/pool/nextcloud/data/user1/files舉例, 小編使用了docker快速創建了一個next cloud應用, 新建的用戶user1, 會把實際的文档放到這個路徑裡。
接下來開始正式操作,用mv遷移文档, 因爲遷移的時間一般比較長, 直接nohup掛著, 避免中斷
nohup mv /源數據文档夾路徑/* /mnt/pool/nextcloud/data/user1/files/ 2>&1 &
注意,遷移文档的時候無論如何不要無聊寫/dev/null的字樣在裡面,和rm -rf /*是幾乎一樣的效果,多一行命令把日志刪了而已,難不成你工作不想要了?小編這是血的教訓啊……
跑完了之後, 記得改一下遷移後的文档權限:
cd /mnt/pool/nextcloud/data chmod -R 770 files && chown -R www-data:www-data files
小編這裡有一個特殊需求, 要同時在服務器裡開一個SMB只讀共享服務和網盤的服務打通, 爲了避免ACL報錯, 所以命令和以上不太一樣, 長成這樣
chmod -R 771 files && chown -R www-data:www-data files && chmod 771 /mnt/pool/nextcloud/data
這樣一來, 文档的權限梳理干淨了。就可以運行掃描了, 這裡小編要運行nextcloud docker下的/var/www/html目錄用php執行一個occ命令, 命令如下
cd /var/www/html sudo -u www-data php occ files:scan user1
意思就是讓nextcloud給user1掃一下未從網頁口徑進來的文档入個庫記個賬。
搜老外網站發現老外在問這種命令:
sudo -u www-data php occ files:scan --unscanned --all
裡面多了一個--unscanned參數, 可以節省很多掃描時間, 可惜官方沒實現, 跑不通, 用了之後新掃描所得文档數始終等於0。於是改了一下,方法變爲:
sudo -u www-data php occ files:scan --path=用戶名/files/xxx
沒錯, 把--unscanned這個參數干掉了, 用--path來指定確切位置。這個path參數的用法說明一下:
--path=<用戶名>/<用戶目錄下的路徑, 一般以files/開頭>
手動遷移組文档夾的方法
因爲組文档夾一直是一個插件的概念出現,官方文档上沒有專門寫出來如何應用這個插件。很遺憾。搜到github有這麽一條命令
sudo -u www-data php occ groupfolders:scan 1
最後邊的數組就是你用戶組的ID號碼。注意,當遷移完成後,需要使用以下命令來刷新權限:
chown -R www-data:www-data /mnt/pool/nextcloud/data/__groupfolders/1
Docker無法輸入中文的臨時解決
因爲next cloud官方那個docker沒法輸入中文。最快的方法是通過宿主命令掛進去,或者發個curl指令來執行。例如, 在宿主機上運行
docker exec nextcloud容器名字或者ID bash -c "sudo -u www-data php -f occ files:scan --path=public/files/我的紅白機存档/"
即可解決
另外一種方式就是在當前你的終耑下用ls命令把文档列舉出來, 再用粘貼複制的方式去解決。如果文档名左右兩側發現有單引號, 不要複制單引號。