Projects/KioFuse: Difference between revisions

    From KDE TechBase
    No edit summary
    No edit summary
    (12 intermediate revisions by 3 users not shown)
    Line 1: Line 1:
    {{Template:I18n/Language Navigation Bar|KioFuse}}
     


    KioFuse allows you to mount remote directories into the root hierarchy of your local file system, thereby exposing [http://docs.kde.org/stable/en/kdebase/kioslave/index.html KDE's advanced access capabilities] (SSH, SAMBA/Windows, FTP, TAR/GZip/BZip2, WebDav, etc) to POSIX-compliant applications such as Firefox, OpenOffice, GNOME apps, shell utilities and more. Another important advantage of KioFuse is that it allows you to arrange the hierarchy of '''all''' your remote, archived and compressed files in whichever way makes sense to you.
    KioFuse allows you to mount remote directories into the root hierarchy of your local file system, thereby exposing [http://docs.kde.org/stable/en/kdebase/kioslave/index.html KDE's advanced access capabilities] (SSH, SAMBA/Windows, FTP, TAR/GZip/BZip2, WebDav, etc) to POSIX-compliant applications such as Firefox, OpenOffice, GNOME apps, shell utilities and more. Another important advantage of KioFuse is that it allows you to arrange the hierarchy of '''all''' your remote, archived and compressed files in whichever way makes sense to you.


    KioFuse works by acting as a bridge between KDE's [http://api.kde.org/4.0-api/kdelibs-apidocs/kio/html/namespaceKIO.html KIO filesystem design] and [http://fuse.sourceforge.net FUSE].
    KioFuse works by acting as a bridge between KDE's [http://api.kde.org/4.0-api/kdelibs-apidocs/kio/html/namespaceKIO.html KIO filesystem design] and [http://fuse.sourceforge.net FUSE].
    === Installation ===
    === Installation ===
    * Install kdelibs (version 4.0 or higher) provided by your Operating System or compile it according to these [http://techbase.kde.org/index.php?title=Getting_Started/Build/KDE4 intructions].
    * Install kdelibs (version 4.0 or higher) provided by your Operating System or compile it according to these [http://techbase.kde.org/index.php?title=Getting_Started/Build/KDE4 intructions].
    * Type the following commands into a terminal:
    * Type the following commands into a terminal:
    <code>
    <syntaxhighlight lang="text">
    svn checkout svn://anonsvn.kde.org/home/kde/trunk/playground/libs/kiofuse
    svn checkout svn://anonsvn.kde.org/home/kde/trunk/playground/libs/kiofuse
    cd kiofuse
    cd kiofuse
    cmake .
    cmake .
    make
    make
    </code>
    </syntaxhighlight>
     
    === Running KioFuse ===
    === Running KioFuse ===
    * Mount with:
    * Mount with:
    <tt>kiofuse --mountpoint <mountpoint> --URL <URL></tt>
    <tt>kiofuse --mountpoint <mountpoint> --URL <URL></tt>
    Line 26: Line 22:
    Real-world example:
    Real-world example:


    <code>
    <syntaxhighlight lang="text">
    # Create the mount point
    # Create the mount point
    mkdir ~/fuse-source
    mkdir ~/fuse-source


    # Download the compressed archive of the FUSE source code
    # Download the compressed archive of the FUSE source code
    wget http://superb-east.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.2.tar.gz
    wget http://superb-east.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.2.tar.gz -P ~


    # Mount the archive in ~/fuse-source
    # Mount the archive in ~/fuse-source
    ./kiofuse --mountpoint ~/fuse-source --URL tar:~/fuse-2.7.2.tar.gz &
    ./kiofuse --mountpoint ~/fuse-source --URL tar:~/fuse-2.7.2.tar.gz &


    # Browse the source code in your favorite filemanager '''without ever needing to unpack the archive'''!
    # Browse the source code in your favorite filemanager without ever needing to unpack the archive!
    dolphin ~/fuse-source &
    dolphin ~/fuse-source &
    nautilus ~/fuse-source &
    nautilus ~/fuse-source &
    thunar ~/fuse-source &
    thunar ~/fuse-source &
    </code>
    </syntaxhighlight>
     
    === Screenshots ===
    [[image:kiofuse_example.png|frame|center]]
    === Features and TODO ===
    === Features and TODO ===
     
    * Some KIO slaves such as tar: don't support seeking and therefore won't be able to read or write to files. Fixing these slaves is on the [http://websvn.kde.org/trunk/playground/libs/kiofuse/TODO?view=markup TODO list].
    * Some KIO slaves such as tar: don't support seeking and therefore won't be able to read or write to files. Fixing these slaves is on the TODO list.
    * KIO needs to be modified so that it is aware of KioFuse mounts and so that it uses its native functions (as opposed to POSIX) to access those resources.
    * KIO needs to be modified so that it is aware of KioFuse mounts and so that it uses its native functions (as opposed to POSIX) to access those resources.
    === POSIX Capabilities ===
    === POSIX Capabilities ===
     
    See the FUSE API for the list of all [http://fuse.sourceforge.net/doxygen/structfuse__operations.html file I/O commands].
    {| border="1"
    {| border="1"
    ! Name !! Description !! Filename
    ! Name !! Description !! Filename
    Line 56: Line 51:
    | ReadLink || Determine destination of link || style="background-color: lightgreen;" | Done
    | ReadLink || Determine destination of link || style="background-color: lightgreen;" | Done
    |-
    |-
    | MkNod || Create file || style="background-color:#ffc642;" | Work In Progress
    | MkNod || Create file || style="background-color: lightgreen;" | Done
    |-
    |-
    | MkDir || Create a directory || style="background-color:#ff4242;" | Not Started
    | MkDir || Create a directory || style="background-color: lightgreen;" | Done
    |-
    |-
    | UnLink || Remove a symlink || style="background-color:#ff4242;" | Not Started
    | UnLink || Remove a symlink || style="background-color: lightgreen;" | Done
    |-
    |-
    | RmDir || Remove a directory || style="background-color:#ff4242;" | Not Started
    | RmDir || Remove a directory || style="background-color: lightgreen;" | Done
    |-
    |-
    | SymLink || Create a symlink || style="background-color:#ff4242;" | Not Started
    | SymLink || Create a symlink || style="background-color: lightgreen;" | Done
    |-
    |-
    | Rename || Rename a file or directory || style="background-color:#ff4242;" | Not Started
    | Rename || Rename a file or directory || style="background-color: lightgreen;" | Done
    |-
    |-
    | Link || Create a hard link || style="background-color:#ff4242;" | Not Started
    | Link || Create a hard link || style="background-color: lightgreen;" | Done
    |-
    |-
    | Chmod || Change permissions of a file or directory || style="background-color:#ff4242;" | Not Started
    | Chmod || Change permissions of a file or directory || style="background-color: lightgreen;" | Done
    |-
    |-
    | Chown || Change owner of a file or directory || style="background-color:#ff4242;" | Not Started
    | Chown || Change owner of a file or directory || style="background-color: lightgreen;" | Done
    |-
    |-
    | Truncate || Change the size of a file || style="background-color:#ff4242;" | Not Started
    | Truncate || Change the size of a file || style="background-color: lightgreen;" | Done
    |-
    |-
    | Open || Open a file for reading, writing, and/or truncating || style="background-color: lightgreen;" | Done
    | Open || Open a file for reading, writing, and/or truncating || style="background-color: lightgreen;" | Done
    Line 80: Line 75:
    | Read || Read the contents of a file || style="background-color: lightgreen;" | Done
    | Read || Read the contents of a file || style="background-color: lightgreen;" | Done
    |-
    |-
    | Write || Write data to a file || style="background-color:#ffc642;" | Work In Progress
    | Write || Write data to a file || style="background-color: lightgreen;" | Done
    |-
    | Truncate || Change the size of a file || style="background-color:#ff4242;" | Not Started
    |-
    |-
    | StatFS || Get Filesystem Statistics || style="background-color:#ff4242;" | Not Started
    | StatFS || Get Filesystem Statistics || style="background-color:#ff4242;" | Not Started
    |-
    |-
    | Flush || Flush cached data || style="background-color:#ff4242;" | Not Started
    | Flush || Flush cached data || style="background-color:#ff4242;" | Not Started
    |-
    | Release || Close an opened file || style="background-color: lightgreen;" | Done
    |-
    |-
    | FSync || Synchronize file contents || style="background-color:#ff4242;" | Not Started
    | FSync || Synchronize file contents || style="background-color:#ff4242;" | Not Started
    Line 122: Line 117:
    | UTimeNS || Change the access and mod times in nanoseconds || style="background-color:#ff4242;" | Not Started
    | UTimeNS || Change the access and mod times in nanoseconds || style="background-color:#ff4242;" | Not Started
    |}
    |}
    === Source Code ===
    The source code to KioFuse can be browsed at:
    http://websvn.kde.org/trunk/playground/libs/kiofuse/

    Revision as of 15:43, 14 July 2012


    KioFuse allows you to mount remote directories into the root hierarchy of your local file system, thereby exposing KDE's advanced access capabilities (SSH, SAMBA/Windows, FTP, TAR/GZip/BZip2, WebDav, etc) to POSIX-compliant applications such as Firefox, OpenOffice, GNOME apps, shell utilities and more. Another important advantage of KioFuse is that it allows you to arrange the hierarchy of all your remote, archived and compressed files in whichever way makes sense to you.

    KioFuse works by acting as a bridge between KDE's KIO filesystem design and FUSE.

    Installation

    • Install kdelibs (version 4.0 or higher) provided by your Operating System or compile it according to these intructions.
    • Type the following commands into a terminal:
    svn checkout svn://anonsvn.kde.org/home/kde/trunk/playground/libs/kiofuse
    cd kiofuse
    cmake .
    make
    

    Running KioFuse

    • Mount with:

    kiofuse --mountpoint <mountpoint> --URL <URL>

    • Unmount with:

    fusermount -u <mountpoint>

    Real-world example:

    # Create the mount point
    mkdir ~/fuse-source
    
    # Download the compressed archive of the FUSE source code
    wget http://superb-east.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.2.tar.gz -P ~
    
    # Mount the archive in ~/fuse-source
    ./kiofuse --mountpoint ~/fuse-source --URL tar:~/fuse-2.7.2.tar.gz &
    
    # Browse the source code in your favorite filemanager without ever needing to unpack the archive!
    dolphin ~/fuse-source &
    nautilus ~/fuse-source &
    thunar ~/fuse-source &
    

    Screenshots

    Features and TODO

    • Some KIO slaves such as tar: don't support seeking and therefore won't be able to read or write to files. Fixing these slaves is on the TODO list.
    • KIO needs to be modified so that it is aware of KioFuse mounts and so that it uses its native functions (as opposed to POSIX) to access those resources.

    POSIX Capabilities

    See the FUSE API for the list of all file I/O commands.

    Name Description Filename
    GetAttr Permissions, Owner, Group Done
    ReadLink Determine destination of link Done
    MkNod Create file Done
    MkDir Create a directory Done
    UnLink Remove a symlink Done
    RmDir Remove a directory Done
    SymLink Create a symlink Done
    Rename Rename a file or directory Done
    Link Create a hard link Done
    Chmod Change permissions of a file or directory Done
    Chown Change owner of a file or directory Done
    Truncate Change the size of a file Done
    Open Open a file for reading, writing, and/or truncating Done
    Read Read the contents of a file Done
    Write Write data to a file Done
    StatFS Get Filesystem Statistics Not Started
    Flush Flush cached data Not Started
    Release Close an opened file Done
    FSync Synchronize file contents Not Started
    SetXAttr Set external attributes Not Started
    GetXAttr Get external attributes Not Started
    ListXAttr List external attributes Not Started
    RemoveXAttr Remove external attributes Not Started
    OpenDir Open a directory Not Started
    ReadDir List files and subdirectories Done
    ReleaseDir Release directory Not Started
    FSyncDir Synchronize directory contents Not Started
    Init Initialize filesystem Not Started
    Destroy Clean up filesystem Not Started
    Access Check file access permissions Work In Progress
    Create Create and open a file Not Started
    FTruncate Change the size of an open file Not Started
    FGetAttr Get attributes of an open file Not Started
    Lock Lock a resource Not Started
    UTimeNS Change the access and mod times in nanoseconds Not Started

    Source Code

    The source code to KioFuse can be browsed at: http://websvn.kde.org/trunk/playground/libs/kiofuse/