วิธีซิงค์ OneDrive Business / Office 365 บน Linux


24

Microsoft OneDrive Business / Office 365 Pro ให้บริการพื้นที่เก็บข้อมูลบนคลาวด์ 1 TB แต่น่าเสียดายที่ไม่เคยมีวิธีการซิงค์บน Linux


2
ยินดีต้อนรับสู่ถาม Ubuntu ! เราเป็นเว็บไซต์คำถามและคำตอบไม่ใช่ฟอรัม ขณะนี้คุณมีทั้งคำถามและคำตอบในหัวข้อคำถามที่กำหนด โปรดแก้ไขโพสต์ของคุณเพื่อลบคำตอบและโพสต์นั้นในส่วนคำตอบด้านล่าง (ควรมีปุ่มใกล้ด้านล่างของหน้า) ขอบคุณ!
เซ

คำตอบ:


7

ปัจจุบันการทดลอง onedrive-d เป็นโปรแกรมโอเพนซอร์สที่สามารถซิงค์บัญชี OneDrive ส่วนบุคคลได้เนื่องจากไม่ยอมรับลิงก์ Microsoft Sharepoint นี่คือวิธีการซิงค์ OneDrive Business / Office 365 โดยใช้GoodSync สำหรับ Linuxซึ่งให้บริการฟรีสำหรับใช้ส่วนตัว

  1. ติดตั้งเวอร์ชั่นที่เหมาะสมกับเครื่อง Linux ของคุณเช่น:

    ./goodsync-linux-x86_64-release.run
    

    ตอบโดยn o สำหรับทั้งการตั้งค่า GoodSync Connect และ GsServer Web UI

  2. เปิด OneDrive ในเว็บเบราว์เซอร์ เลือก "กลับสู่ Classic OneDrive" ที่ด้านล่างขวา
  3. ที่อยู่เว็บเบราว์เซอร์ของคุณตอนนี้จะมีลักษณะเช่น: https://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents/Forms/All.aspxและขึ้นอยู่กับว่ามันจะได้รับของคุณเชื่อมโยงซิงค์office365://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documentsซึ่งจะเป็น
  4. สร้างไฟล์ใหม่ในโฟลเดอร์ย่อย. goodsync ในบ้านของคุณ:

    gedit ~/.goodsync/jobs.tix
    
  5. ป้อนรหัสต่อไปนี้ในไฟล์และบันทึก:

    <Job>
    Name = "OneDrive_Sync"
    Side1 = <SideOptions>
    Dir = <Connect>
        Url = "put_your_syncing_link_here"
        UserID = "put_your_OneDrive/Office365_Bussiness_email_here"
    </Connect>
    </SideOptions>
    Side2 = <SideOptions>
    Dir = <Connect>
        Url = "file:///your_home_folder/one_drive_folder"
    </Connect>
    </SideOptions>
    Direction = 0
    ExcludeHidden = No
    ExcludeSystem = No
    DetectMovesAndRenames = Yes
    LinksOption = 1
    ExcludeEmptyFolders = No
    LimitChangesPercent = 100
    AutoResolveConflicts = 3
    DetectMovesAndRenames = Yes
    </Job>
    
  6. เริ่มกระบวนการซิงค์:

    gsync sync "OneDrive_Sync"
    
  7. ในขั้นตอนนี้เว็บเบราว์เซอร์ของคุณจะเปิดหน้า OneDrive / Office 365 และขออนุญาตจากคุณเพื่ออนุญาตให้ Goodsync เข้าถึงบัญชีของคุณ หลังจากป้อนการซิงค์ข้อมูลรับรองของคุณจะเริ่มขึ้น

ข้อ จำกัด : Microsoft ไม่อนุญาตการร้องขอ URL ที่มีความยาวมากกว่า 270 อักขระดังนั้น GoodSync จึงไม่สามารถซิงค์ไฟล์ที่มีชื่อพา ธ แบบยาว

สนุก!


3
เว็บเบราว์เซอร์ของฉันไม่เปิดหน้าการให้สิทธิ์ในขั้นตอนที่ 7 คุณมีความคิดอย่างไรในการทำด้วยตนเอง
pat-s

3
เว็บเบราว์เซอร์ของฉันไม่เปิดให้ลงชื่อเข้าใช้ด้วย
ฮ่าฮ่า TTpro

2
ระบบไฟล์ที่ office365: /.../ เอกสารถูกแทนที่ด้วย New OneDrive V2 API คลิกปุ่มเรียกดูเพื่อเรียกดูไปยังโฟลเดอร์ซิงค์ OneDrive ของคุณใหม่เนื่องจาก OneDrive ต้องใช้การรับรองความถูกต้องบนเบราว์เซอร์ (OAuth2)
Ferroao

6

Ubuntu 18.04 และใหม่กว่า

มีไคลเอ็นต์ OneDrive ในที่เก็บเริ่มต้นของ Ubuntu ใน Ubuntu 18.04 และใหม่กว่า OneDrive เป็นระบบจัดเก็บข้อมูลบนคลาวด์ของ Microsoft แพคเกจนี้ให้บริการไคลเอนต์บรรทัดคำสั่งที่เชี่ยวชาญในการซิงโครไนซ์กับที่เก็บข้อมูลบนคลาวด์ OneDrive

ติดตั้งด้วย:

sudo apt install onedrive

เมื่อเรียกใช้ครั้งแรกระบบจะขอให้คุณรับรองความถูกต้องด้วยลิงก์ หลังจากการตรวจสอบคุณสามารถเปิดใช้ deamon ด้วยแล้วsystemctl --user enable onedrive systemctl --user start onedriveคำอธิบายเพิ่มเติมสามารถพบได้ใน man onedrivemanpage ง่ายมากในการติดตั้งและใช้เวลาเพียงประมาณห้านาที


4
สิ่งนี้ใช้ไม่ได้กับ OneDrive for Business
tricasse

1
@tricasse ใช้งานได้กับ Office 365 Pro
Mattia_98

2

ในขณะที่เครื่องมือดั้งเดิมและที่ใช้กันทั่วไปonedrivedโดย xybu ยังคงไม่รองรับ OneDrive for Business แต่เป็น OneDrives ส่วนบุคคลเท่านั้น อย่างไรก็ตามมีทางแยกของโครงการนี้ใน GitHub โดย derrix060ที่มีการใช้งาน (แต่ยังมีข้อบกพร่อง ) สำหรับลูกค้าธุรกิจ

คำเตือน:เมื่อคุณใช้วิธีนี้ฉันขอแนะนำให้ตรวจสอบว่าไฟล์มีการซิงโครไนซ์อย่างถูกต้องเสมอโดยตรวจสอบออนไลน์ที่https://www.office.comและ / หรือใช้สคริปต์ตัวคลุมของฉันที่แสดงท้ายหน้า อย่างน้อยได้รับแจ้งข้อผิดพลาดใด ๆ โดยใช้การแจ้งเตือนบนเดสก์ทอป!

บางครั้งผู้พัฒนาอาจดูเหมือนไม่สามารถรับการเปลี่ยนแปลงหรืออัปโหลดอย่างถูกต้องทำให้ OneDrive ของคุณอยู่ในสถานะไม่ได้ซิงโครไนซ์ (บางส่วน) นอกจากนี้ยังสามารถเกิดขึ้นได้ว่ามันจะสร้างความขัดแย้งผสานกับตัวเองด้วยเหตุผลบางอย่างและเปลี่ยนชื่อไฟล์ของคุณในประเทศโดยผนวกชื่อโฮสต์ของคุณในวงเล็บและเลือกตัวเลข น่าเสียดายที่ไม่มีการแจ้งเตือนเกี่ยวกับข้อผิดพลาด แต่คุณสามารถดูรายการในล็อกไฟล์ของคุณ

หากสิ่งนี้เกิดขึ้นคุณสามารถลองซิงโครไนซ์ไฟล์ที่เกี่ยวข้องอีกครั้งโดยสัมผัสกับไฟล์หรือเปลี่ยนชื่อไฟล์หรือโฟลเดอร์ที่อยู่ในไฟล์นั้น

เคล็ดลับ:ดูเหมือนว่าห้องสมุดที่เพิ่งได้รับการแก้ไขมักจะมีปัญหาโดยเฉพาะอย่างยิ่งไฟล์ที่ถูกบันทึกไว้ในราก OneDrive โดยตรง อาจเป็นการดีกว่าถ้าคุณวางไฟล์ทั้งหมดในไดเรกทอรีย่อยแทนที่จะทิ้งไฟล์เหล่านั้นลงในโฟลเดอร์ OneDrive โดยตรง

แม้ว่ามันจะฟังดูโง่ แต่ฉันก็สังเกตเห็นว่ามันทำให้เกิดปัญหาน้อยกว่าในการอัปโหลดไฟล์ผ่านทางไคลเอนต์ OneDrive Web และรอจนกว่าพวกเขาจะได้รับการซิงโครไนซ์กลับไปที่โฟลเดอร์ท้องถิ่นของคุณ (ซึ่งอาจใช้เวลาหลายนาที) ในท้องถิ่น ไม่ว่าจะเป็นจริงหรือใช้งานได้โดยสมบูรณ์วัตถุประสงค์ของ OneDrive ขึ้นอยู่กับการตัดสินใจของคุณเอง ...

ดูไฟล์ readme ของโครงการสำหรับคำแนะนำการติดตั้งแบบสมบูรณ์ แต่นี่เป็นข้อมูลสรุปโดยย่อ:

การติดตั้ง

  1. ตรวจสอบให้แน่ใจว่าคุณไม่ได้ติดตั้งonedrived(หรือonedrive-d) เวอร์ชันอื่น

  2. ติดตั้งแพคเกจการอ้างอิง:

    sudo apt install build-essential python3-dev libssl-dev inotify-tools python3-dbus libdbus-1-dev libdbus-glib-1-dev
    
  3. ดาวน์โหลดล่าสุดngrokไคลเอนต์สำหรับลินุกซ์จากเว็บไซต์อย่างเป็นทางการที่https://ngrok.com/download ngrok-clientแพคเกจจากอูบุนตูที่เก็บเก่าเกินไปและไม่ตอบสนองความต้องการ
    คลายngrok-stable-linux-amd64.zipไฟล์เก็บถาวรที่ดาวน์โหลด มันมีเพียงหนึ่งเดียวngrokไบนารีซึ่งคุณควรใส่ในสถานที่ด้วยตัวคุณเช่นเข้า$PATH การสมัคร ngrok อาจไม่จำเป็น/usr/local/bin/

  4. ติดตั้งonedrivedแอปพลิเคชั่น Python3 จาก GitHub โดยใช้pip3:

    sudo -H pip3 install git+https://github.com/derrix060/onedriveClient.git
    
  5. เลือกกำหนดค่าตำแหน่งไฟล์บันทึกสำหรับonedrivedที่คุณสามารถตรวจสอบปัญหาได้หากมีสิ่งใดที่ทำงานไม่ถูกต้องเช่น

    onedrived-pref config set logfile_path ~/.config/onedrived/onedrived.log
    

การตั้งค่าบัญชีและการกำหนดค่าไดรฟ์

หลังจากการติดตั้งสำเร็จคุณต้องกำหนดค่าบัญชีและไดรฟ์:

  1. เพิ่มบัญชี OneDrive for Business ของคุณโดยใช้โหมดโต้ตอบโดยเรียกใช้:

    onedrived-pref account add -b
    

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

  2. ตรวจสอบว่าได้เพิ่มบัญชีสำเร็จแล้วโดยตรวจสอบผลลัพธ์ของคำสั่งด้านล่าง ควรมีลักษณะคล้ายกันและแสดงรายการบัญชีที่คุณลงชื่อเข้าใช้ด้วย:

    $ onedrived-pref account list
    
    All OneDrive accounts associated with user "YOUR_UBUNTU_USERNAME":
    
      #  Account ID                 Owner Name     Email Address         Profile Type
    ---  -------------------------  -------------  --------------------  --------------
      0  YOUR_PERSONAL_ACCOUNT_ID   YOUR_NAME      YOUR_BUSINESS_EMAIL   Business
    
  3. กำหนดค่าไดรฟ์ของคุณในโหมดคำสั่งแบบโต้ตอบโดยการเรียกใช้:

    onedrived-pref drive set
    

    คุณจะเห็นรายการของไดรฟ์ทั้งหมดของคุณและขอให้ป้อนหมายเลขแถวของไดรฟ์ที่คุณต้องการเพิ่มลงในการกำหนดค่าท้องถิ่นของคุณ
    จากนั้นคุณต้องระบุไดเรกทอรีท้องถิ่นที่คุณต้องการใช้เป็นโฟลเดอร์รูทเพื่อซิงโครไนซ์กับไดรฟ์ของคุณ คุณก็สามารถตีและมันจะใช้ค่าเริ่มต้นEnter ~/OneDriveหากไม่มีเส้นทางมันจะถูกสร้างขึ้น สิ่งเดียวกันสำหรับเส้นทางไปยังไฟล์ละเว้นที่คุณต้องการใช้คุณสามารถกดEnterและมันจะใช้ค่าเริ่มต้น~/.config/onedrived/ignore_v2.txtและสร้างหากจำเป็น

  4. ตรวจสอบผลลัพธ์ของคำสั่งด้านล่างเพื่อแสดงข้อมูลเกี่ยวกับไดรฟ์ที่มีและที่กำหนดค่าทั้งหมด ควรแสดงไดรฟ์ที่คุณเพิ่งตั้งค่าด้วยการตั้งค่าที่ถูกต้องภายใต้หัวข้อDrives that have been set up:

    onedrived-pref drive list
    

เรียกใช้ daemon

หลังจากกำหนดค่าไดรฟ์ของคุณแล้วคุณต้องลองและเริ่มonedrivedภูต ฉันแนะนำให้เปิดมันในโหมดแก้ไขข้อบกพร่องก่อนในกรณีที่มีปัญหาใด ๆ ที่คุณจะพลาด สิ่งนี้จะเริ่มต้นonedrivedในเบื้องหน้า:

onedrived start --debug

หากทุกอย่างเรียบร้อยและคำสั่งไม่ผิดพลาดและออกลองใส่ไฟล์บางไฟล์ในโฟลเดอร์ OneDrive ท้องถิ่นของคุณและดูว่ามันประสาน คุณควรจะสามารถยืนยันได้โดยไปที่แอปพลิเคชันเว็บ OneDrive ที่https://www.office.comและตรวจสอบว่าไฟล์ที่คุณเพิ่มในเครื่องนั้นปรากฏขึ้นที่นั่นหรือไม่

คุณสามารถออกจากonedrivedกระบวนการอีกครั้ง terminal ของคุณโดยการกด+CtrlC

หากต้องการเปิดใช้งานonedrivedตามปกติในฐานะ daemon พื้นหลังให้รันด้วย:

onedrived start

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

เสื้อคลุมสำหรับการแจ้งเตือนข้อผิดพลาด

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

คุณสามารถเริ่มสคริปต์ตัวตัดคำโดยไม่มีอาร์กิวเมนต์ (หรือใส่ไว้ในแอปพลิเคชันเริ่มต้นอัตโนมัติ) แทนonedrived startคำสั่ง

#!/bin/bash
LOGFILE=~/.config/onedrived/onedrived.log
ICON_START=weather-overcast
ICON_STOP=weather-few-clouds
ICON_ERROR=weather-severe-alert

onexit () {
    onedrived stop
    notify-send -i "$ICON_STOP" "OneDrive" "Wrapper stopped"
    echo "onedrived-wrapper stopped"
}

trap onexit EXIT

onedrived stop
echo "---" >> "$LOGFILE"

onedrived start || {
    echo "Failed to start onedrived!"
    exit 1
}
notify-send -i "$ICON_START" "OneDrive" "Wrapper started"

echo "Monitoring onedrived.log for error messages..."
tail -n 1 -F --pid="$(pgrep -f "onedrived start")" "$LOGFILE" |
    while read LINE ; do
        echo "$LINE"
        if MESSAGE="$(grep -Pio '(?<=ERROR: ).*' <<< "$LINE")" ; then
            notify-send -i "$ICON_ERROR" "OneDrive Error" "$MESSAGE"
        fi
    done

ฉันยังคงได้รับข้อความ "ไม่สามารถอนุญาต onedrived: interaction_required" หลังจากฉันเข้าสู่ลิงค์ที่สองเพื่อตรวจสอบบัญชี ODfB ความคิดใด ๆ ที่ทำให้สิ่งนี้เกิดขึ้นได้?
Jimakos

@Jimakos ขออภัยฉันไม่เคยพบข้อความนั้น ไม่มีความคิดที่น่าเสียดาย
ผู้บัญชาการไบต์

1

rcloneรองรับ OneDrive for Business ดูบทความวิธีติดตั้ง OneDrive ใน Linux โดยใช้ Rclone (รองรับบัญชีธุรกิจและส่วนตัว) - บล็อกการจู่โจมของ Linuxสำหรับการใช้งาน

นี่คือตัวอย่างของฉันในการตั้งค่ารีโมตใหม่onedrive1ด้วย rclone 1.48.0 (บน Fedora 30):

$ rclone config
2019/10/10 06:35:56 NOTICE: Config file ".config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> onedrive1
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
⋮
19 / Microsoft OneDrive
   \ "onedrive"
⋮
Storage> 19      
** See help for onedrive backend at: https://rclone.org/onedrive/ **

Microsoft App Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id> 
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret> 
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n

Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Choose a number from below, or type in an existing value
 1 / OneDrive Personal or Business
   \ "onedrive"
 2 / Root Sharepoint site
   \ "sharepoint"
 3 / Type in driveID
   \ "driveid"
 4 / Type in SiteID
   \ "siteid"
 5 / Search a Sharepoint site
   \ "search"
Your choice> 1
Found 2 drives, please select the one you want to use:
0: OneDrive - Example Inc (business) id=b!gFLg-RRe****-T9B****
1: OneDrive - Example Inc (business) id=b!gFLg-RRe****-T-H****
Chose drive to use:> 1
Found drive 'root' of type 'business', URL: https://example-my.sharepoint.com/personal/myname_example_com/Documents
Is that okay?
y) Yes
n) No
y/n> y
Current remotes:

Name                 Type
====                 ====
onedrive1            onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

URL ของไดรฟ์ 0 ลงท้ายด้วย/ElementinnerHTMLและไม่มีไฟล์ในกรณีของฉัน

แล้วติดบนไดเรกทอรีท้องถิ่นผ่านบรรทัดคำสั่งrclone เบราว์เซอร์หรือเว็บ GUI ตั้งแต่ v1.49

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.