def update_filestore(self, resource_id, **kwargs):
        """Updates a single resource on filestore.

        Args:
            resource_id (str): The filestore resource id.
            **kwargs: Keyword arguments that are passed to resource_create.

        Kwargs:
            url (str): New file url (for file link).
            filepath (str): New file path (for file upload).
            fileobj (obj): New file like object (for file upload).
            post (bool): Post data using requests instead of ckanapi.
            name (str): The resource name.
            description (str): The resource description.
            hash (str): The resource hash.

        Returns:
            obj: requests.Response object if `post` option is specified,
                ckan resource object otherwise.

        Examples:
            >>> CKAN(quiet=True).update_filestore('rid')
            Resource `rid` was not found in filestore.
        """
        err_msg = 'Resource `%s` was not found in filestore.' % resource_id

        try:
            resource = self.resource_show(id=resource_id)
        except NotFound:
            print(err_msg)
            return None
        except ValidationError as err:
            if err.error_dict.get('resource_id') == ['Not found: Resource']:
                raise NotFound(err_msg)
            else:
                raise err
        else:
            resource['package_id'] = self.get_package_id(resource_id)

            if self.verbose:
                print('Updating resource %s...' % resource_id)

            f, args, data = self.get_filestore_update_func(resource, **kwargs)
            return self._update_filestore(f, *args, **data)