Office 2011, Mac OS Lion, Excel สร้างไฟล์ชั่วคราวบน Windows server 2008, SMB แชร์วิธีหยุด?


1

ฉันมีปัญหากับ Mac และ Windows SMB share เมื่อใช้ Excel 2011

ถ้าฉันเปิดเอกสาร excel จากหน้าต่างแชร์มันจะสร้าง "ไฟล์ผี" เริ่มต้นด้วย ~ $ ดังนั้นชื่อไฟล์แบบเต็มเช่น ::

หากฉันเปิด testdoc.xlsx ไฟล์ผีจะถูกสร้างขึ้นที่เรียกว่า ~ $ testdoc.xlsx นี่ไม่ใช่ปัญหาหลักเนื่องจากเมื่อเอกสารถูกปิดไฟล์จะถูกลบออก

ไฟล์นี้กลายเป็นปัญหาเมื่อผู้ใช้ของฉันทำงานผ่าน VPN และหากพวกเขาตัดการเชื่อมต่อ VPN ของพวกเขาโดยไม่ปิดเอกสาร excell ไฟล์ "โกสต์" จะถูกทิ้งไว้ข้างหลังแล้วใครก็ตามบน mac จะสามารถเปิดอ่านไฟล์ได้เท่านั้น ลบออก

ฉันได้ลองใช้คำสั่ง apple ::

ค่าเริ่มต้นเขียน com.apple.desktopservices DSDontWriteNetworkStores จริง

หยุดนี้เป็น mac ที่เขียนทรัพยากร forks และ DS เก็บไฟล์ไว้ในไฟล์เครือข่าย แต่ไม่หยุดการสร้างไฟล์ ghost นี้

ไม่มีใครรู้ว่าไฟล์เหล่านี้คืออะไร? จะหยุดพวกเขาได้อย่างไร? ปลอดภัยไหมที่จะหยุดพวกเขา

ขอแสดงความนับถือ


1
ฉันคิดว่าไฟล์เหล่านี้เป็นไฟล์สำรองข้อมูลอัตโนมัติหากเป็นเช่นนั้นวิธีเดียวที่จะกำจัดไฟล์เหล่านี้ได้คือปิดใช้งานการสำรองข้อมูลอัตโนมัติ
terdon

ขอบคุณสำหรับความคิดเห็นฉันปิดใช้งานการสำรองข้อมูลอัตโนมัติ แต่ไฟล์ยังคงอยู่ทันทีที่เปิดเอกสารปรากฏขึ้น
Kevin

คำตอบ:


0

สิ่งอื่น ๆ ที่เกิดขึ้นกับฉันเนื่องจากไม่ใช่การสำรองข้อมูลก็คือมันเป็น lockfile ที่มีฟังก์ชั่นเพื่อป้องกันไม่ให้ผู้ใช้คนอื่นเขียนไฟล์ถ้ามันเปิดอยู่แล้วสำหรับการเขียนซึ่งไม่ใช่ความคิดที่แย่

เห็นได้ชัดว่าทางออกที่ดีที่สุดคือการทำให้ผู้ใช้ของคุณมีความรับผิดชอบ แต่แน่นอนว่าเป็นสาเหตุที่หายไป :)

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

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

#!/bin/bash
## Define the regular expression we will use
regex='(.*)~\$(.+)'

## Find all files that begin with "~\$*" in the directory
## specified on the command line, the lockfiles
find ${@} -name "~\$*" -print0 2>/dev/null | while IFS= read -r -d '' file; do

    if [[ $file =~ $regex ]]
    then
        ## Get the name of the file that created the lockfile
        realname=${BASH_REMATCH[1]}${BASH_REMATCH[2]};
        ## Check if the file is currently open
        isopen=`lsof "$realname" 2>/dev/null | wc -l`
        ## If the file is not open (by a program running on the
        ## same machine as this script, delete the lockfile
        if (( $isopen == 0))
        then
            echo "Deleting $file..."
            rm "$file"
        fi
    fi
done
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.