[Tutor] symlinking dirs with spaces

mike mike at froward.org
Mon Apr 29 02:17:11 CEST 2013


On 04/28/2013 12:43 PM, eryksun wrote:
> On Sat, Apr 27, 2013 at 9:51 PM, Dave Angel <davea at davea.name> wrote:
>>
>> And another little-known fact -- NTFS supports hard links, or at least it
>> did in 1995, on NT 3.5  As I recall, there wasn't support at the cmd prompt,
>> but you could create them with system calls.
>
> NTFS has always supported hard links as additional $FILE_NAME
> attributes in the MFT file record, but it was primarily meant for the
> POSIX subsystem. I did find a Win32 solution for NT 3.x, which may be
> what you're recalling. It requires 3 calls to BackupWrite in order to
> write a link (i.e. a $FILE_NAME attribute) to an existing file record.
> Apparently this was documented by Microsoft circa '96, but the
> original article no longer exists online. For an example see
> CreateHardLinkNt4() here:
>
> http://cpansearch.perl.org/src/AUDREYT/Win32-Hardlink-0.11/lnw.cpp
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>

My apologies for not responding, Dave's insight resolved my problem 
instantly. I am now having problems with a function I've made that is 
supposed to run a find on the media root dir and symlink anything that 
was downloaded within a specific amount of days, here is the code:

#!/usr/bin/env python
import os
from sys import argv
import subprocess
script, media = argv

# This is the directory you will sync the symbolic links from, to the 
device.
loadDir = "/opt/data/music/load/"

# Root dir of the media
musicDir = "/opt/data/music"

# This is the destination folder, whatever folder the device is mounted to.
destDir = "/media/rev/MOT"

# Get the current working directory
origDir = os.getcwd()

# Glob the current working directory and the "media" argument together
# to form a full file path
origFul = os.path.join('%s' % origDir, '%s' % media)

linkDir = ['ln', '-s', '%s' % origFul, '%s' % loadDir]



# Command to sync if media == "push"
syncCom = "rsync -avzL %s %s" % (loadDir, destDir)

def sync_new():
     durFind = raw_input("Enter the duration of time in days you want to 
link")
     durFind = int(durFind)
     fileExcl = "*torrent*"
     linkNew = ['find', '%s' % musicDir, '-maxdepth 2', '-mtime %s' % 
durFind, '-not', '-name', '%s' % fileExcl, '-exec addsync {} \;']
     subprocess.call(linkNew)

def link():
     print "Adding %s to %s..." % (origFul, loadDir)
     subprocess.call(linkDir)

def sync():
     print "Syncing the contents of %s to %s" % (loadDir, destDir)
     subprocess.call(syncCom, shell=True)

if media == "push":
     sync()
elif media == "pushnew":
     sync_new()
else:
     link()


Running the script with the pushnew argument results in the following 
error from find:

find: unknown predicate `-maxdepth 2'

I'm thinking this is also related to my usage of subprocess? I just 
started carving this out right now so I'm still debugging but if anyone 
sees anything obvious I would appreciate it.


More information about the Tutor mailing list