Method: FileUtils.link_entry
- Defined in:
- lib/fileutils.rb
.link_entry(src, dest, dereference_root = false, remove_destination = false) ⇒ Object
Creates hard links; returns nil.
Arguments src and dest should be interpretable as paths.
If src is the path to a file and dest does not exist, creates a hard link at dest pointing to src:
FileUtils.touch('src0.txt')
File.exist?('dest0.txt') # => false
FileUtils.link_entry('src0.txt', 'dest0.txt')
File.file?('dest0.txt') # => true
If src is the path to a directory and dest does not exist, recursively creates hard links at dest pointing to paths in src:
FileUtils.mkdir_p(['src1/dir0', 'src1/dir1'])
src_file_paths = [
'src1/dir0/t0.txt',
'src1/dir0/t1.txt',
'src1/dir1/t2.txt',
'src1/dir1/t3.txt',
]
FileUtils.touch(src_file_paths)
File.directory?('dest1') # => true
FileUtils.link_entry('src1', 'dest1')
File.file?('dest1/dir0/t0.txt') # => true
File.file?('dest1/dir0/t1.txt') # => true
File.file?('dest1/dir1/t2.txt') # => true
File.file?('dest1/dir1/t3.txt') # => true
Keyword arguments:
-
dereference_root: true- dereferencessrcif it is a symbolic link. -
remove_destination: true- removesdestbefore creating links.
Raises an exception if dest is the path to an existing file or directory and keyword argument remove_destination: true is not given.
Related: FileUtils.ln (has different options).
813 814 815 816 817 818 819 |
# File 'lib/fileutils.rb', line 813 def link_entry(src, dest, dereference_root = false, remove_destination = false) Entry_.new(src, nil, dereference_root).traverse do |ent| destent = Entry_.new(dest, ent.rel, false) File.unlink destent.path if remove_destination && File.file?(destent.path) ent.link destent.path end end |