# Tag Info

224

I've had success with Sysinternals Process Explorer. With this, you can search to find what process(es) have a file open, and you can use it to close the handle(s) if you want. Of course, it is safer to close the whole process. Exercise caution and judgement. To find a specific file, use the menu option "Find->Find Handle or DLL..." Type in part of the ...

72

unlocker is also useful for this (works on both 32 and 64 bit)

71

58

Try the openfiles command.

35

Just be very careful with closing handles; it's even more dangerous than you'd think, because of handle recycling - if you close the file handle, and the program opens something else, that original file handle you closed may be reused for that "something else." And now guess what happens if the program continues, thinking it is working on the file (whose ...

30

No. "rm -rf" does a recursive depth-first traversal of your filesystem, calling unlink() on every file. The two operations that cause the process to go slowly are opendir()/readdir() and unlink(). opendir() and readdir() are dependent on the number of files in the directory. unlink() is dependent on the size of the file being deleted. The only way to make ...

30

Millions is a big number - I'll get back to that later. Regardless of your approach, the underlying mechanism needs to be copying directly from one bucket to another - in this way (since your buckets are in the same region) you do not incur any charge for bandwidth. Any other approach is simply inefficient (e.g. downloading and reuploading the files). ...

27

On Windows XP you can use fsutil (built into the OS) to create a hardlink fsutil hardlink create c:\foo.txt c:\bar.txt Keep in mind fsutil will only work if both are on same drive

23

I've used Handle with success to find such processes in the past.

23

rsync -aplx --link-dest=dir1/ dir1/ merged/ rsync -aplx --link-dest=dir2/ dir2/ merged/ This would create hardlinks rather than moving them, you can verify that they were moved correctly, then, remove dir1/ and dir2/

21

Don't tar. Use rsync -av to preserve permissions while transfering the files. Though like tar, this does not preserve selinux context. Not that I would consider that important though.

17

Probably a trailing new-line character. For example, a file created in a text editor containing only an 'a' may actually contain 2 bytes: $cat /tmp/test_text | hexdump -C 00000000 61 0a |a.| 00000002 However, using echo -n (no new line) gives us a size of 1 byte:$ echo -n 'a' > /tmp/test_text $ls -l ... 17 There's two parts to this question: when to add a new FILEGROUP, and when to add a new FILE in a filegroup. First let's talk theory: Mark's right about the primary reason being performance. The secondary reason is disaster recovery. With SQL Server 2005 and newer, you can do filegroup restores. When disaster strikes, you can restore just your primary ... 16 As an alternative, move the directory aside, recreate it with the same name, permissions and ownership and restart any apps/services that care about that directory. You can then "nice rm" the original directory in the background without having to worry about an extended outage. 16 On the containing folder you'll want to change the group to be dev and then use mark it set-gid. chgrp dev <containing-folder> chmod g+ws <containing-folder> The set gid bit makes files created in that folder to inherit the group of the folder as well as marking the setgid bit on any new folders. You'll want to be careful when moving files ... 16 Using --link-dest to create space-efficient snapshot based backups, whereby you appear to have multiple complete copies of the backedup data (one for each backup run) but files that don't change between runs are hard-linked instead of creating new copies saving space. (actually, I still use the rysnc-followed-by-cp -al method which achieves the same thing, ... 15 locate filename Much faster than find, if you're running the locate service, and it only finds files that existed at the time updatedb last ran (usualy the night befor under the control of a cron job). You can run updatedb by hand, but that is even slower than the find cletus suggests, and requires root. I sometimes update the database by hand after ... 15 It's strange nobody noted that cp has option "-l": -l, --link hard link files instead of copying You can do something like % mkdir merge % cp -rl dir1/* dir2/* merge % rm -r dir* % tree merge merge ├── a │ ├── file1.txt │ ├── file2.txt │ ├── file5.txt │ └── file6.txt ├── b │ ├── file3.txt │ ├── file7.txt │ └── file8.txt └── c ... 15 sed '5555,7777!d' <filename> This will print lines 5555-7777 of the file inclusively. Dennis Posted the following which I agree should be faster: sed '5555,7777p; 7778q' filename The following evidence that it should be faster:$ n=1 $while [[ n -le 100000 ]]; do echo$n >> sedtest2; n=$((n + 1)); done$ strace -e trace=read -o sed1 sed ...

15

An extra byte is for the line end at the end of the file, it's quite common for Linux text editors to add this line end after the last line.

14

You can use systemtap to show all PIDs that are trying to use unlink() on the inode of .bashrc and .bash_profile files. Install systemtap and the debug symbols for your kernel. Create a file with name unlink.stap with the following content: probe syscall.unlink { printf ("%s(%d) unlink (%s) userID(%d)\n", execname(), pid(), argstr, uid()) } Then ...

14

Try to use rsync version 3 if you have to sync many files! V3 builds its file list incrementally and is much faster and uses less memory than version 2. Depending on your platform this can make quite a difference. On OSX version 2.6.3 would take more than one hour or crash trying to build an index of 5 million files while the version 3.0.2 I compiled ...

13

I do love lsof, but I think it's overkill for a simple question like this. The /proc filesystem contains everything you want to know. Perhaps an example would be best: # ps ax|grep tail 7196 pts/4 S+ 0:00 tail -f /var/log/messages 8773 pts/0 R+ 0:00 grep tail # ls -l /proc/7196/cwd lrwxrwxrwx 1 insyte insyte 0 2009-07-29 19:05 ...

13

You probably want to buy more disk space, but assuming you don't, you could... pipe the tarball around rather than downloading it. newserver# ssh olduser@oldserver "cat /path/to/tarball" | tar xf - or if you don't have SSH access to your old server newserver# wget -O - http://oldserver/path/to/tarball | tar xf - or use rsync like Dennis said. Be ...

12

The -L flag to rsync will sync the contents of files or directories linked to, rather than the symbolic link.

12

If you have the command lsof available [whcih most *nix flavors do] you would use: lsof -p NNN to list files open by process NNN. I haven't used BSD in a while but from memory fuser is a close parallel to lsof. I'm not sure of a command to find the cwd of a process but on Linux cwd is symlinked into the /proc directory of the process ie. /proc/NNN/cwd.

12

The command df(1) takes one or more arguments and will return the mountpoint and device on which that file or directory exists, as well as usage information. You can then use the path or device to look up the filesystem type in the output of mount -v or similar. Unfortunately, the output format of both df and mount are system-dependent; there is no ...

12

If you need to update a website with some huge files over a slowish link, you can transfer the small files this way: rsync -a --max-size=100K /var/www/ there:/var/www/ then do this for the big files: rsync -a --min-size=100K --bwlimit=100 /var/www/ there:/var/www/ rsync has lots of options that are handy for websites. Unfortunately, it does not have a ...

12

find / -name example.filename

12

The tool your looking for is rdiff. It works like combining rsync and diff. It creates a patch file which you can compare, or distribute.

Only top voted, non community-wiki answers of a minimum length are eligible